Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5
Error atributo INSERT - python 3.6
#1
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
Responder
#2
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
Responder
#3
Muy bueno, gracias, por que no funciona en python 3.6?; ya que en python 2.7 si funciona normalmente.
Responder
#4
¿Qué error estás obteniendo en Python 3.6?
Responder
#5
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".
Responder
#6
En ese caso, en Python 3 también puedes utilizar:

  1. from tkinter import *


Saludos
Responder
#7
Gracias!!!
Responder


Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)