Foros Python

Versión completa: Error atributo INSERT - python 3.6
Actualmente estas viendo una versión simplificada de nuestro contenido. Ver la versión completa con el formato correcto.
Estado tratando de correr este pequeño programa en tkinter, python 3.6 y me bota un error de: self.tinfo.insert(END, texto_info)

AttributeError: 'NoneType' object has no attribute 'insert'.


Este es el código: 

import tkinter


col_fon="white"

class aplicacion():
    def __init__(self):
        self.v0=tkinter.Tk()
        self.v0.title("__init__")
        self.v0.geometry("400x400")
        self.v0.resizable(width=False, height=False)
        self.v0.config(bg=col_fon)
        self.tinfo=tkinter.Text(self.v0, width=40, height=10).place(x=30,y=30)
        self.binfo=tkinter.Button(self.v0, text="Ver info", command=self.verinfo).place(x=30, y=370)
        self.bot1=tkinter.Button(self.v0, text="salir", command=self.v0.destroy).place(x=350, y=370)
        #self.binfo.focus_set()
        self.v0.mainloop()
        
    def verinfo(self):
        #self.tinfo.delete("1.0", tkinter.END)
        
        info1=self.v0.winfo_class()
        info2=self.v0.winfo_geometry()
        info3=str(self.v0.winfo_width())
        info4=str(self.v0.winfo_height())
        info5=str(self.v0.winfo_rootx())
        info6=str(self.v0.winfo_rooty())
        info7=str(self.v0.winfo_id())
        info8=self.v0.winfo_name()
        info9=self.v0.winfo_manager()
        
        texto_info=("Clase de 'v0': "+info1+"\n")
        texto_info+=("Resolución y Posición: "+info2+"\n")
        texto_info+=("Anchura ventana: "+info3+"\n")
        texto_info+=("Altura ventana: "+info4+"\n")
        texto_info+=("Pos. ventana X: "+info5+"\n")
        texto_info+=("Pos. ventana Y: "+info6+"\n")
        texto_info+=("ID de 'v0': "+info7+"\n")
        texto_info+=("Nombre de Objeto: "+info8+"\n")
        texto_info+=("Gestor ventanas: "+info9+"\n")
        
        self.tinfo.insert(END, texto_info)
    
def main():
    app=aplicacion()
    return 0
    

if __name__ == "__main__":
    main()

Necesito saber por que me sale este error, yo imagino que es por los componentes del INSERT.

Saludos
Hola. El problema es que la siguiente línea...

  1. self.tinfo=tkinter.Text(self.v0, width=40, height=10).place(x=30,y=30)


...está asignando el valor de retorno de la función place() (que es None) al objeto self.tinfo. Lo que quieres probablemente es:

  1. self.tinfo=tkinter.Text(self.v0, width=40, height=10)
  2. self.tinfo.place(x=30,y=30)


Lo mismo sucede con los objetos self.binfo y self.bot1.

Saludos
Muy bueno, gracias, por que no funciona en python 3.6?; ya que en python 2.7 si funciona normalmente.
¿Qué error estás obteniendo en Python 3.6?
el error puede ser al momento de importar por ejemplo, yo acostumbro a poner al inicio "import tkinter" en python 3.6, y en python 2.7 solía poner "from Tkinter import *". al momento de querer llamar algunos algunos widgets en python 2.7 no tenia error, pero cuando lo llamo con la misma sintaxis en python 3.6 tengo que interponer "tkinter.wdgets".
En ese caso, en Python 3 también puedes utilizar:

  1. from tkinter import *


Saludos
Gracias!!!