我创建了一个复选框。我希望程序打印' python'当我在创建的复选框中勾选它。 但它不起作用......我没有得到错误,但它没有打印出来的蟒蛇' 请帮忙。 这是我的代码
#!/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()
答案 0 :(得分:0)
lng[0]
是IntVar
,而不是int
,因此它永远不会等于一。
您需要使用get
方法将变量的值与1:
def allstates():
if lng[0].get() == 1:
print ('python')
另一个解决方案是更改__getitem__
的{{1}}方法,以便它返回变量的值而不是变量本身,正如我在回答Python Form: Using TKinter --> run script based on checked checkboxes in GUI
Checkbar
在这种情况下,您不必更改def __getitem__(self, key):
return self.vars[key].get()
功能。