gpt4 book ai didi

python - 更新 python Tkinter 框架

转载 作者:行者123 更新时间:2023-12-04 06:31:27 30 4
gpt4 key购买 nike

我在更新 python Tkinter 框架时遇到了困难。我画框
一些标签和文本字段,当一个人按下按钮时,我想做一些
计算并更新标签和文本字段。我可以将数据打印到我的
标准输出,但我无法更新 Tk 屏幕。如何让 countFld 显示更新的值?

class Application(Frame):

def __init__(self):
self.root = Tk()
Frame.__init__(self, self.root)
self.count = 0
self.createWidgets()

def createWidgets(self):
self.countFrame = Frame(self, bd=2, relief=RIDGE)
Label(self.countFrame, text='Count:').pack(side=LEFT, padx=5)
self.countFld = IntVar()
Label(self.countFrame, text=str(self.count)).pack(side=RIGHT, padx=5)
self.countFld.set(self.count)
self.countFrame.pack(expand=1, fill=X, pady=10, padx=5)

self.CNTBTN = Button(self)
self.CNTBTN["text"] = "UPDATE"
self.CNTBTN["fg"] = "red"
self.CNTBTN["command"] = self.update_count
self.CNTBTN.pack({"side": "left"})

def update_count(self):
self.count = self.count + 1
print "Count = %" % self.count #prints correct value
self.countFld.set(self.count) #Does not update display

最佳答案

您的问题是您没有将变量附加到小部件。此外,您需要使用 StringVar,因为 Label Widget 对 Strings 而不是 Ints 进行操作。

尝试类似:

self.countStr = StringVar()
self.countStr.set(str(self.count))
Label(self.countFrame, textvariable=self.countStr).pack(side=RIGHT, padx=5)

当事件循环空闲时,Tk 更新显示。所以设置新值后需要重新进入事件循环。

关于python - 更新 python Tkinter 框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5362404/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com