我要做的是设置if语句来检查是否打开或关闭了一个checkbuttons值
我在想的是这样的事情
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()
答案 0 :(得分:7)
首先,不要在一行创建和打包小部件。 pack
会返回None
,因此在上面的代码中,checkbox_1
为None
。代替:
checkbox_1 = Checkbutton(root, text='1 ', command=checkbutton_value)
checkbox_1.pack()
现在,要获取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()
通常需要为这样的事情创建自己的checkbutton类:
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()