Python 3.x 选中了哪个checkbutton
我已经创建了一个复选框。我希望程序在“创建”复选框中勾选“python”时打印它。 但它不工作…我没有得到错误,但它不打印“python” 请帮忙。 这是我的密码Python 3.x 选中了哪个checkbutton,python-3.x,checkbox,tkinter,Python 3.x,Checkbox,Tkinter,我已经创建了一个复选框。我希望程序在“创建”复选框中勾选“python”时打印它。 但它不工作…我没有得到错误,但它不打印“python” 请帮忙。 这是我的密码 #!/usr/bin/python3 from tkinter import * class Checkbar(Frame): def __init__(self, parent=None, picks=[], side=LEFT, anchor=W): Frame.__init__(self, parent)
#!/usr/bin/python3
from tkinter import *
class Checkbar(Frame):
def __init__(self, parent=None, picks=[], side=LEFT, anchor=W):
Frame.__init__(self, parent)
self.vars = []
for pick in picks:
var = IntVar()
chk = Checkbutton(self, text=pick, variable=var)
chk.pack(side=side, anchor=anchor, expand=YES)
self.vars.append(var)
def state(self):
return map((lambda var: var.get()), self.vars)
def __getitem__(self,key):
return self.vars[key]
if __name__ == '__main__':
root = Tk()
lng = Checkbar(root, ['Python', 'Ruby', 'Perl', 'C++'])
tgl = Checkbar(root, ['English','German'])
lng.pack(side=TOP, fill=X)
tgl.pack(side=LEFT)
lng.config(relief=GROOVE, bd=2)
def allstates():
## print(lng[0])
if lng[0] == 1:
print ('python')
Button(root, text='Quit', command=root.quit).pack(side=RIGHT)
Button(root, text='Peek', command=allstates).pack(side=RIGHT)
root.mainloop()
lng[0]
是一个IntVar
,而不是int
,因此它永远不等于一
您需要使用get
方法将变量的值与1进行比较:
def allstates():
if lng[0].get() == 1:
print ('python')
另一个解决方案是更改复选框的\uuu getitem\uuuu
方法,以便它返回变量的值,而不是我在回答
在这种情况下,您不必更改allstates
函数。现在如果我想在另一个类中使用变量“lng[0]”及其值。我该怎么办?我认为if lng[0]。get():
比if lng[0]。get()==1:
def __getitem__(self, key):
return self.vars[key].get()