Tkinter中绑定IntVar的标签文本无法更新问题求助
Tkinter标签文本不更新的问题解决
你的代码里有三个关键问题导致标签无法更新,逐个修正就能解决:
标签未绑定变量:你创建了
IntVar但没和标签关联,用text = money.get()只会在标签初始化时读取一次值,后续变量变化不会同步到标签。应该用textvariable=money参数绑定变量,这样变量更新时标签会自动刷新。按钮命令未正确调用函数:
command=lambda: button_clicked只是引用了函数对象,没有执行它。直接写command=button_clicked就可以(不需要传参的话,lambda是多余的)。全局变量未在函数内声明:
num是全局变量,在button_clicked函数里修改它时,必须先声明global num,否则Python会把它当成局部变量,导致赋值前引用的错误。
修正后的完整代码:
from tkinter import * from tkinter import ttk root = Tk() frm = ttk.Frame(root, padding=10) frm.grid() money = IntVar() money.set(0) num = 0 def button_clicked(): global num # 声明使用全局变量num num += 1 money.set(num) ttk.Label(frm, text="Hello World!").grid(column=0, row=0) # 用textvariable绑定IntVar,实现自动更新 ttk.Label(frm, textvariable=money).grid(column=0, row=1) ttk.Button(frm, text="Quit", command=root.destroy).grid(column=1, row=0) # 直接绑定函数,无需多余lambda ttk.Button(frm, text="Add Money", command=button_clicked).grid(column=1, row=1) root.mainloop()
内容的提问来源于stack exchange,提问作者user29923506
相关产品推荐
相关产品推荐

