如何使Tkinter检查按钮单独工作并默认为选中状态

时间:2014-06-09 10:50:08

标签: python function object checkbox tkinter

我正在尝试选择或不选择一系列复选框 - 然后当用户按下按钮时,分配给复选框的字母应添加到输入的字符串然后打印。

我遇到两个主要问题;

  1. 当用户按下复选框时,会选中所有复选框。

  2. 我想默认是所有这些都经过检查,但我找不到如何做到这一点。如果无法回答这个问题,那么它不如第一个问题重要,因此并不重要。

  3. 到目前为止,这是我的代码;

    导入Tkinter

    课程菜单():

    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("&#34)

    如果它很重要,那就是Python 2.7.3。另外,我要感谢,并向那些可能必须指出非常明显/基本的东西的人道歉,作为Tkinter的初学者,我还没有意识到。

1 个答案:

答案 0 :(得分:1)

您必须使用其中一个Tkinter对象StrintVarIntVarBooleanVarDoubleVar正常(StringVar)作为{{1参数。你不能使用普通的python变量。您必须为每个变量创建一个单独的变量。

例如:

variable

然后,要获得值,您需要使用self.Selection = {"A": Tkinter.BoolVar(), "B": Tkinter.BoolVar(), ...} self.Selection["A"].set(True) ... 方法:

get