问题
what i am trying to do is setup if statements to check if a checkbuttons value is on or off
what i was thinking was something like this
from Tkinter import *
def checkbutton_value():
#If statement here
#is their something like
#if checkbox_1.onvalue == True:
# checkbox_2.deselect()
#if checkbox_1.varible == checkbox_1.onvalue:
# checkbox_2.deselect()
print 'Need Help on lines 7-8 or 10-11'
root=Tk()
checkbox_1 = Checkbutton(root, text='1 ', command=checkbutton_value).pack()
checkbox_2 = Checkbutton(root, text='2 ', command=checkbutton_value).pack()
checkbox_3 = Checkbutton(root, text='QUIT', command=quit).pack()
root.mainloop()
回答1:
First, do not create and pack a widget on one line. pack
returns None
, so in your code above, checkbox_1
is None
. Instead:
checkbox_1 = Checkbutton(root, text='1 ', command=checkbutton_value)
checkbox_1.pack()
Now, to get the value of the checkbutton:
def checkbutton_value1():
if(var1.get()):
var2.set(0)
def checkbutton_value2():
if(var2.get()):
var1.set(0)
var1=IntVar()
checkbox_1 = Checkbutton(root, text='1 ', variable=var1, command=checkbutton_value1)
checkbox_1.pack()
var2=IntVar()
checkbox_2 = Checkbutton(root, text='2 ', variable=var2, command=checkbutton_value2)
checkbox_2.pack()
It is often desireable to create your own checkbutton class for things like this:
class MyCheckButton(CheckButton):
def __init__(self,*args,**kwargs):
self.var=kwargs.get('variable',IntVar())
kwargs['variable']=self.var
Checkbutton.__init__(self,*args,**kwargs)
def is_checked(self):
return self.var.get()
来源:https://stackoverflow.com/questions/11403723/python-tkinter-checkbutton-is-there-a-way-to-check-on-off-value