【问题标题】:Tkinter: is there a way to check checkboxes by default?Tkinter:有没有办法默认检查复选框?
【发布时间】:2023-03-08 07:11:01
【问题描述】:

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

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


【解决方案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所有复选框。

        【讨论】:

          猜你喜欢
          • 2019-08-21
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-06-26
          • 2013-05-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多