属性错误: 类型对象'gui'没有属性'label'



我想通过类中的setter方法从类外更改labeltext。我只是属性错误:类型对象"gui"没有属性"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()

我不知道它是否有用,但这是我的完整代码https://pastebin.com/bT43NgpH

谢谢你的帮助!

您必须在gui的实例上调用setLabelText,而不是在类本身上。当您在__btnClick中调用setLabelText时,您必须将gui的实例作为此函数的参数。您已经在参数self中获得了该实例。

因此__btnClick应更改为:

def __btnClick(self):
changeText(self)

changeText应改为:

def changeText(the_window):
the_window.setLabelText()

我想添加一个链接到Python代码的样式指南。对于一个经验丰富的程序员来说,你的代码很难阅读(好吧,没有那么难,但比必要的更难(,因为你不遵守命名约定。

最新更新