0

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

ここで 2 つの質問があります。

  1. 動的に作成されたチェック ボックスを削除する方法 (chk_bx) 最初のチェック ボックスを選択すると、他の多くのボックスが有効になります。最初のチェック ボックスを選択解除すると、最初に作成されたボックスが削除されますか?

  2. 動的に作成されたボックス「選択/非選択」から値を取得するにはどうすればよいですか?

4

1 に答える 1

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.動的に作成されたボックス「選択/非選択」から値を取得するにはどうすればよいですか?

チェックボタンが選択されているかどうかに応じてまたはIntVarを格納するために使用されるTkinter を作成する必要があります。このオブジェクトも追跡する必要がありますが、対応するチェックボタンに追加できるため、新しいリストを作成する必要はありません。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
于 2013-03-02T16:47:28.557 に答える