AttributeError: el objeto de tipo ‘gui’ no tiene el atributo ‘label’
Quiero cambiar el texto de una etiqueta desde fuera de la clase a través de un método setter en la clase. Sólo estoy obteniendo AttributeError: el objeto tipo ‘gui’ no tiene el atributo ‘label’. Intenté cambiar el texto a través de label[‘text’]; label.config(text = ‘X’)
from tkinter import *
class gui:
def __init__(self):
self.root = Tk()
self.label = Label(self.root, text='Y')
self.label.pack()
self.button = Button(self.root, text='Click', command=self.__btnClick)
self.button.pack()
mainloop()
def __btnClick(self):
changeText()
def setLabelText(self):
self.label['text'] = 'X'
def changeText():
gui.setLabelText(gui)
if __name__ == '__main__':
window = gui()
No sé si esto ayuda, pero aquí está mi código completo: https://pastebin.com/bT43NgpH
¡Gracias por tu ayuda!
davy.ai
El problema aquí es que estás intentando acceder al atributo de etiqueta como si fuera un diccionario, usando
self.label['text']
. En Tkinter, los atributos de etiqueta se acceden como propiedades de clase, por lo que deberías usarself.label.cget('text')
para obtener el valor actual del atributo de texto de la etiqueta, oself.label.config(text=nuevo_texto)
para establecerlo. Aquí tienes una versión actualizada de tu código que debería funcionar: