启用复选框 Tkinter (Python 3.4)



我在Tkinter中有一个复选框。我希望它始终保持选中状态,但禁用复选框会破坏 GUI 应用程序的外观。我想将其状态保持为正常,如果用户尝试取消选中它,该框将保持选中状态,或者立即重新选中。

global ghistory
ghistory = IntVar()
cc = Checkbutton(frame3, text="History", variable=ghistory)
cc.select()
cc.pack()

我该怎么做?

添加一个将变量设置为 True 的函数。一个快速的lambda函数可以解决问题:

cc=tk.Checkbutton(frame3,text="History",variable=ghistory, command=lambda:ghistory.set(1))

或者您可以使用 select 命令:

cc=tk.Checkbutton(frame3,text="History",variable=ghistory)
cc['command'] = cc.select

使用 .cget('state') 查看按钮是否被禁用...

    self.widget_checkbutton = tk.Checkbutton(self, variable=self.some_variable, command=lambda:self.stay_checked())
    def stay_checked(self):
        if self.widget_checkbutton.cget('state') == 'disabled':
            self.widget_checkbutton.select()
        else:
            self.widget_checkbutton.deselect()
#this will only let the button be checked if widget is active. 

(所以基本上,如果某些小部件被禁用...您告诉复选框保持不变。否则,如果某些小部件正常,则允许该复选框正常工作...选择。。。取消选择...

最新更新