复选框与tkinter

时间:2013-03-02 15:17:10

标签: python tkinter

在编码tkinter复选框时需要一些帮助。 我有一个检查按钮,如果我选择,它将启用许多其他复选框。下面是选择第一个复选框后的功能

def enable_():
    # Global variables
    global var
    # If Single test
    if (var.get()==1):
        Label (text='Select The Test To Be Executed').grid(row=7,column=1)
        L11 = Label ().grid(row=9,column=1)
        row_me =9
        col_me =0
        test_name_backup = test_name
        for checkBoxName in test_name:
            row_me = row_me+1
            chk_bx = Checkbutton(root, text=checkBoxName, variable =checkBoxName, \
                            onvalue = 1, offvalue = 0, height=1, command=box_select(checkBoxName), \
                            width = 20)
            chk_bx.grid(row = row_me, column = col_me)
            if (row_me == 20):
                row_me = 9
                col_me = col_me+1

我在这里有两个问题。

  1. 如何删除动态创建的复选框(chk_bx)我的意思是,如果我选择初始复选框,它将启用许多其他框,如果我取消选中第一个复选框,它应该删除最初创建的框?

  2. 我如何从“选中/不选择”动态创建框中获取值?

1 个答案:

答案 0 :(得分:1)

<强> 1。如何删除动态创建的复选框?

只需将所有支票按钮添加到列表中,这样您就可以在需要时调用destroy()

def remove_checkbuttons():
    # Remove the checkbuttons you want
    for chk_bx in checkbuttons:
        chk_bx.destroy()

def create_checkbutton(name):
    return Checkbutton(root, text=name, command=lambda: box_select(name),
                       onvalue=1, offvalue=0, height=1, width=20)

#...
checkbuttons = [create_checkbutton(name) for name in test_name]

<强> 2。我如何从动态创建的框中选择“选中/不选择”的值?

您必须创建一个Tkinter IntVar,用于存储onvalueoffvalue,具体取决于是否选中了复选按钮。您还需要跟踪此对象,但不必创建新列表,因为您可以将它们附加到相应的检查按钮:

def printcheckbuttons():
    for chk_bx in checkbuttons:
        print chk_bx.var.get()

def create_checkbutton(name):
    var = IntVar()
    cb = Checkbutton(root, variable=var, ...)
    cb.var = var
    return cb