为何函数无法修改变量?tkinter标签文本不更新求助
问题原因
你修改了expression变量但标签文本没变化,是因为Tkinter的Label组件在初始化时只会读取一次text参数的值,后续expression变量的变动不会自动同步到标签上,必须手动更新标签的文本属性。
解决方法
在press函数中更新expression后,调用sum_label.config(text=expression)或者直接赋值sum_label['text'] = expression来刷新标签内容,修改后的代码如下:
expression = '' sum_label = Label(root, text=expression, bg='#D3D3D3', padx=113, pady=14) sum_label.place(x=20, y=10) #Numbers def press(num): global expression expression += str(num) # 新增这行代码更新标签文本 sum_label.config(text=expression) print(num)
如果你不想依赖global关键字,也可以把expression封装成可变对象(比如列表)或者用类来管理状态,但当前场景下添加标签更新代码是最直接的解决方式。
内容的提问来源于stack exchange,提问作者Illes
相关产品推荐
相关产品推荐

