Tkinter:有没有办法默认检查复选框?
Posted
技术标签:
【中文标题】Tkinter:有没有办法默认检查复选框?【英文标题】:Tkinter: is there a way to check checkboxes by default? 【发布时间】:2016-10-02 09:08:26 【问题描述】:我有这段代码可以创建一个简单的复选框:
from Tkinter import *
CheckVar = IntVar()
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
但是默认情况下这个复选框是未选中的,我正在寻找一种方法来检查它。
到目前为止我已经尝试插入
CheckVar.set(1)
在 CheckVar 之后,但它不起作用。
感谢您的帮助
编辑:这是我的完整代码。当我运行它时,该框仍未选中
from Tkinter import *
class App():
def __init__(self, root):
self.root = root
CheckVar = IntVar()
CheckVar.set(1)
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
self.checkbutton.grid(row=0, column=0,)
root = Tk()
app = App(root)
root.mainloop()
【问题讨论】:
刚刚在我的机器上试了一下,效果很好。您的代码中的其他地方一定有问题。 它应该可以工作。如果没有,请提供与此相关的完整代码。 【参考方案1】:您的CheckVar
是一个局部变量。它正在收集垃圾。将其保存为对象属性。此外,您可以一步创建变量并将其全部初始化:
self.CheckVar = IntVar(value=1)
self.checkbutton = Checkbutton(..., variable = self.CheckVar)
你也可以使用checkbutton的select
函数:
self.checkbutton.select()
【讨论】:
我收到'Checkbutton' has no attribute 'select'
ttk 0.3.1
@xjcl: 那么你必须使用来自 ttk 的 Checkbutton
而不是 tkinter。【参考方案2】:
我想你要找的函数是.select()
此函数选择复选按钮(可以从函数名称中推测)
在定义小部件后尝试调用此函数:
from Tkinter import *
CheckVar = IntVar()
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
self.checkbutton.select()
通过在创建小部件后立即调用该函数,它看起来好像是默认选中的。
【讨论】:
【参考方案3】:只是添加到 GunnerStone 的答案 - 因为我正在寻找可以重置我的值/复选框的东西。
如果您出于任何原因想要de-select
复选框值,请使用deselect()
:
from Tkinter import *
CheckVar = IntVar()
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
self.checkbutton.deselect()
或使用toggle
在两者之间切换:
self.checkbutton.toggle()
【讨论】:
【参考方案4】:我使用的是 ttk,唯一有效的是
self.checkbutton.state(["selected"])
通过检查状态
"selected" in self.checkbutton.state()
【讨论】:
【参考方案5】:var4 = IntVar(value=1)
Checkbutton(root, text="New", variable=var4, bg="light green").grid(row=12, column=0)
这将check
所有复选框。
【讨论】:
以上是关于Tkinter:有没有办法默认检查复选框?的主要内容,如果未能解决你的问题,请参考以下文章
有没有办法预先检查或避免 Google 的 Gmail / Google 日历 OAuth 审批流程中的范围复选框?