我想通过类中的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代码的样式指南。对于一个经验丰富的程序员来说,你的代码很难阅读(好吧,没有那么难,但比必要的更难(,因为你不遵守命名约定。