Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

Whatever I do to my checkbutton, it does not seem to set the variable. Here's the parts of the code that are involved:

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

It just keeps printing 0. Am I doing something wrong? Nothing else does anything to manual.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
240 views
Welcome To Ask or Share your Answers For Others

1 Answer

You're looking for IntVar()

IntVar() has a method called get() which will hold the value of the widget you assign it to.

In this particular instance, it will be either 1 or 0 (On or off). You can use it something like this:

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()

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...