簡體   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