tkinter 复选按钮未设置变量



>无论我对我的复选框做什么,它似乎都没有设置变量。以下是涉及的代码部分:

class Window:
    def __init__(self):
        self.manualb = 0 #to set the default value to 0
    def setscreen(self):
        #screen and other buttons and stuff set here but thats all working fine
        manual = tkr.Checkbutton(master=self.root, variable=self.manualb, command=self.setMan, onvalue=0, offvalue=1) #tried with and without onvalue/offvalue, made no difference
        manual.grid(row=1, column=6)
    def setMan(self):
        print(self.manualb)
        #does some other unrelated stuff

它只是保持打印 0。我做错了什么吗?没有其他任何操作可以手动操作。

你正在寻找IntVar()

IntVar()有一个名为get()的方法,它将保存您分配给它的小部件的值。

在此特定实例中,它将为 1 或 0(打开或关闭)。你可以像这样使用它:

from tkinter import Button, Entry, Tk, Checkbutton, IntVar
class GUI:
    def __init__(self):
        self.root = Tk()
        # The variable that will hold the value of the checkbox's state
        self.value = IntVar()
        self.checkbutton = Checkbutton(self.root, variable=self.value, command=self.onClicked)
        self.checkbutton.pack()
    def onClicked(self):
        # calling IntVar.get() returns the state
        # of the widget it is associated with 
        print(self.value.get())
app = GUI()
app.root.mainloop()

这是因为您需要使用 tkinter 的变量类之一。

这看起来像下面这样:

from tkinter import *
root = Tk()
var = IntVar()
var.trace("w", lambda name, index, mode: print(var.get()))
Checkbutton(root, variable=var).pack()
root.mainloop()

本质上,IntVar()是一个"容器"非常松散地说),它"保存"它所分配到的小部件的值。

最新更新