我是 python 和这个论坛的新手。我尝试为我在代码中遇到的错误寻找解决方案,但这只会让我尝试很多不同的东西,但我仍然无法更新我的标签。
现在我认为这与我无法在类级别正确定义变量有关。但老实说,我很难掌握阶级、自我、全球、本地等概念。所以这很可能会增加我的困惑。
我从我的大型程序中剪切了给我错误的代码,以便在此处发布。我希望你们中的一些人能告诉我我做错了什么。提前抱歉打破了python代码礼仪,我还在学习。
我尝试的一些事情我在发布的代码中注释掉了......我在这里发布的代码给出了以下错误:
Traceback (most recent call last):
File "C:/Users/User/Desktop/smaller example.py", line 35, in <module>
app = cbgui(root)
File "C:/Users/User/Desktop/smaller example.py", line 8, in __init__
self.initUI()
File "C:/Users/User/Desktop/smaller example.py", line 23, in initUI
labelupdate = Tkinter.Label(frame, width = 50, textvariable = self.var)
AttributeError: cbgui instance has no attribute 'var'
我的代码:
import sys, Tkinter, tkFileDialog
class cbgui(Tkinter.Frame):
def __init__(self, master):
Tkinter.Frame.__init__(self,master)
self.master = master
self.initUI()
self.var = Tkinter.StringVar()
#self.var = Tkinter.StringVar()
self.var.set = "hello"
def UpdateLabel(self):
#var.set = "bye"
self.var.set = "bye"
def initUI(self):
self.master.title("a small update test")
frame = Tkinter.Frame(self, relief=Tkinter.RAISED, borderwidth = 1)
frame.pack(fill = Tkinter.BOTH, expand = 1)
self.pack(fill = Tkinter.BOTH, expan = 1)
#labelupdate = Tkinter.Label(frame, width = 50, textvariable = var)
labelupdate = Tkinter.Label(frame, width = 50, textvariable = self.var)
#labelupdate = Tkinter.Label(frame, width = 50, text = "hello")
labelupdate.grid(row=3, column=2)
labelspace = Tkinter.Label(frame, width = 1)
labelspace.grid(row=3, column=3)
UpdateButton = Tkinter.Button(frame, text="Update label", command = self.UpdateLabel)
UpdateButton.grid(row=3, column=4)
root = Tkinter.Tk()
root.geometry("700x300+10+10")
app = cbgui(root)
Tkinter.mainloop()