繁体   English   中英

更改变量时 Tkinter Checkbutton 不更新

[英]Tkinter Checkbutton not updating when changing variable

我有一个 tkinter GUI,我正在我的 Macbook 上使用 Python 3.8。 我遇到了一个问题,即更改与复选按钮关联的变量不会更改复选按钮本身的外观。 如果我将与其关联的 IntVar() 设置为 1,我希望 checkbutton 显示为已选中,并且从我读过的所有内容来看,这应该发生。

这是一些显示问题的极其简化的代码:

import tkinter as tk

class Window():
    def __init__(self, master):
        var = tk.IntVar()
        checkbutton = tk.Checkbutton(master, variable=var)
        checkbutton.pack()
        var.set(1)

root = tk.Tk()
Window(root)
root.mainloop()

当我运行脚本时,未选中复选按钮。 我仍然可以通过单击检查按钮来检查它。 这是一个已知的错误还是我遗漏了什么?

已解决:正如 jasonharper 指出的,问题是垃圾收集。 tkinter 变量没有被用于任何事情,只是作为一个局部变量存储,所以它被抛出并且不能被复选按钮引用。 将 IntVar 保存在卡住的地方解决了这个问题。 一种解决方案是将变量保存在 checkbutton 本身的 var 属性中:

import tkinter as tk

class Window():
    def __init__(self, master):
        var = tk.IntVar()
        checkbutton = tk.Checkbutton(master, variable=var)
        checkbutton.pack()
        var.set(1)
        checkbutton.var = var

root = tk.Tk()
Window(root)
root.mainloop()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM