我想通過類中的 setter 方法從類外部更改標簽文本。我剛剛收到 AttributeError: type object 'gui' has no attribute 'label'。我嘗試通過 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
感謝您的幫助!
uj5u.com熱心網友回復:
您必須在類本身上呼叫notsetLabelText的實體gui。當您呼叫時setLabelText,__btnClick您必須將 的實體gui作為此函式的引數。您已經在引數中獲得了實體self。
所以__btnClick應該改成:
def __btnClick(self):
changeText(self)
并changeText應改為:
def changeText(the_window):
the_window.setLabelText()
我想添加一個指向Python 代碼風格指南的鏈接。您的代碼對于有經驗的程式員來說很難閱讀(好吧,不是那么難,但比必要的難),因為您沒有遵循命名約定。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/375683.html
