Tkinter,如何根据复选框状态设置某些元素的状态

时间:2019-03-23 20:49:58

标签: python tkinter

我有一个变量hashCode,该变量来自复选框

hashCode

此代码无法正常工作。 我想如果选中复选框,则将某些元素的状态设置为“正常”,但未选中时,将其设置为“禁用”

1 个答案:

答案 0 :(得分:1)

通过将命令链接到隐藏它的函数,我对RadioButton()做了类似的事情:

v = tk.IntVar()
tk.Radiobutton(self.widget, text="Turn on", variable=v, value=1, command=self.show_other_widget).grid(row=0, column=0)
tk.Radiobutton(self.widget, text="Turn off", variable=v, value=2, command=self.hide_other_widget).grid(row=0, column=1)

链接到:

def hide_other_widget(self):
    self.other_widget.configure(state='disabled')

def show_other_widget(self):
    self.other_widget.configure(state='normal')

我不认为您可以使用单个Checkbutton来完成此操作,因为该命令仅在打开时运行,而不是在关闭时运行(如http://effbot.org/tkinterbook/checkbutton.htm中所述)。相反,您可以使用线程来连续检查按钮状态并相应地调整窗口小部件!

import threading

def check_button_status():
    while True:
        status = pliki.get()
        if status == 1:
            liczba_pE['state'] = NORMAL
            nazwa_pE['state'] = NORMAL
            tresc_pE['state'] = NORMAL
        else:
            liczba_pE['state'] = DISABLED
            nazwa_pE['state'] = DISABLED
            tresc_pE['state'] = DISABLED

pliki = IntVar()
plikiC = Checkbutton(secunderFrame, text="Twórz pliki",
                     font=("Bookman Old Style", 8, 'bold'),
                     variable=pliki, onvalue=True, offvalue=False)
t = threading.Thread(target=check_button_status) # make our thread
t.start() # have it monitor the button status forever