AttributeError: type object 'gui' has no attribute 'label'
AttributeError: type object 'gui' has no attribute 'label'
我想通过 class 中的 setter 方法从 class 外部更改标签文本。我刚开始
AttributeError:类型对象 'gui' 没有属性 'label'。我尝试通过标签['text']更改文本; label.config(文字='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()
我不知道它是否有帮助,但这是我的完整代码
https://pastebin.com/bT43NgpH
感谢您的帮助!
您必须在 gui
的实例而不是 class 本身上调用 setLabelText
。当您在 __btnClick
中调用 setLabelText
时,您必须将 gui
的实例作为此函数的参数。您在参数 self
.
中获得了实例
所以__btnClick
应该改成:
def __btnClick(self):
changeText(self)
和changeText
应该修改为:
def changeText(the_window):
the_window.setLabelText()
我想在 Style Guide for Python Code 中添加一个 link。对于有经验的程序员来说,您的代码很难阅读(好吧,不是那么难,但比必要的难),因为您不遵循命名约定。
我想通过 class 中的 setter 方法从 class 外部更改标签文本。我刚开始 AttributeError:类型对象 'gui' 没有属性 'label'。我尝试通过标签['text']更改文本; label.config(文字='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()
我不知道它是否有帮助,但这是我的完整代码 https://pastebin.com/bT43NgpH
感谢您的帮助!
您必须在 gui
的实例而不是 class 本身上调用 setLabelText
。当您在 __btnClick
中调用 setLabelText
时,您必须将 gui
的实例作为此函数的参数。您在参数 self
.
所以__btnClick
应该改成:
def __btnClick(self):
changeText(self)
和changeText
应该修改为:
def changeText(the_window):
the_window.setLabelText()
我想在 Style Guide for Python Code 中添加一个 link。对于有经验的程序员来说,您的代码很难阅读(好吧,不是那么难,但比必要的难),因为您不遵循命名约定。