Tkinter:有没有办法默认选中复选框?

问题描述 投票:0回答:6

我有这段代码将创建一个简单的复选框:

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()
python checkbox tkinter
6个回答
46
投票

你的

CheckVar
是一个局部变量。它正在收集垃圾。将其保存为对象属性。此外,您可以一步创建变量并初始化它:

self.CheckVar = IntVar(value=1)
self.checkbutton = Checkbutton(..., variable = self.CheckVar)

您还可以使用复选按钮的

select
功能:

self.checkbutton.select()

19
投票

我认为您正在寻找的功能是

.select()

此函数选择复选按钮(可以从函数名称推测)

尝试在定义小部件后调用此函数:

from Tkinter import *

CheckVar = IntVar()
self.checkbutton = Checkbutton(self.root, text = "Test", variable = CheckVar)
self.checkbutton.select()

通过在创建小部件后立即调用该函数,它看起来就像默认选择的一样。


5
投票

只是添加到 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()


2
投票

我正在使用 ttk,我使用

 检查 
ttk.Checkbutton

self.checkbutton.state(["selected"])

并使用

取消选中它
self.checkbutton.state(["!selected"])

您可以使用

检查状态
"selected" in self.checkbutton.state()  # returns True or False

1
投票

我以为我只是发布对我有用的示例代码,这会创建一个选中的复选框。

window1 = tkinter.Tk()
check1 = tkinter.IntVar()

checkbox1 = tkinter.Checkbutton(window1, variable=check1, text="")
checkbox1.grid(row=0, column=0)
checkbox1.select()

-1
投票
var4 = IntVar(value=1)
Checkbutton(root, text="New", variable=var4, bg="light green").grid(row=12, column=0)

这将

check
所有复选框。

© www.soinside.com 2019 - 2024. All rights reserved.