如何让Tkinter复选框独立工作并默认选中
我正在尝试制作一系列可以选择或不选择的复选框,然后当用户按下按钮时,分配给这些复选框的字母应该被添加到一个输入的字符串中,并且打印出来。
我遇到了两个主要问题:
当用户点击一个复选框时,所有的复选框都被选中了。
我希望默认情况下所有复选框都是选中的,但我找不到怎么做到这一点。如果这个问题无法解决,那就没有第一个问题那么重要,所以没关系。
这是我目前的代码:
import Tkinter
class MENU():
def __init__(self,NewData):
self.SCREEN = Tkinter.Tk()
self.NewData = NewData
self.Selection = {"A":1,"B":1,"C":1,"D":1}
self.A = Tkinter.Checkbutton(self.SCREEN,text="A",variable=self.Selection["A"]).pack()
self.B = Tkinter.Checkbutton(self.SCREEN,text="B",variable=self.Selection["B"]).pack()
self.C = Tkinter.Checkbutton(self.SCREEN,text="C",variable=self.Selection["C"]).pack()
self.D = Tkinter.Checkbutton(self.SCREEN,text="D",variable=self.Selection["D"]).pack()
self.BtnFinish = Tkinter.Button(self.SCREEN,text="Finish selection",command=self.FinishSelection)
self.BtnFinish.pack()
self.SCREEN.mainloop()
def FinishSelection(self):
SelectionString = ""
for n in self.Selection:
if self.Selection[n]:
SelectionString+=n
self.NewData+="\nQuestions\n"+SelectionString+"\n"
print self.NewData
MENU("")
如果这有什么关系的话,我是在使用Python 2.7.3。此外,感谢大家,也很抱歉让你们指出一些非常明显或基础的东西,作为Tkinter的初学者,我还没有意识到这些。
1 个回答
1
你必须使用 Tkinter 提供的几个特殊对象,比如 StringVar
、IntVar
、BooleanVar
或 DoubleVar
,来作为 variable
参数的值。你不能直接用普通的 Python 变量。每个变量都需要单独创建。
举个例子:
self.Selection = {"A": Tkinter.BoolVar(), "B": Tkinter.BoolVar(), ...}
self.Selection["A"].set(True)
...
然后,要获取这个值,你需要使用 get
方法:
value = self.Selection["A"].get()