gpt4 book ai didi

python - 尝试更新 tkinter 类中的标签

转载 作者:太空宇宙 更新时间:2023-11-04 03:59:17 25 4
gpt4 key购买 nike

我是 python 和这个论坛的新手。我尝试为我在代码中遇到的错误寻找解决方案,但这只会让我尝试很多不同的东西,但我仍然无法更新我的标签。

现在我认为这与我无法在类级别正确定义变量有关。但老实说,我很难理解类、 self 、全局、本地等概念。所以这很可能会增加我的困惑。

我从我的大型程序中删除了给我错误的代码以发布到这里。我希望你们中的一些人能启发我我做错了什么。提前抱歉打破了 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()

最佳答案

您需要在调用 self.initUI 之前创建 self.var 因为 initUI 使用 self.var

def __init__(self, master):
Tkinter.Frame.__init__(self,master)
self.master = master
self.var = Tkinter.StringVar()
#self.var = Tkinter.StringVar()
self.var.set("hello")
self.initUI()

关于python - 尝试更新 tkinter 类中的标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16598160/

25 4 0