2015-06-22 39 views
0

我試圖做一個GUI,顯示大量的checkbuttons,我從列表中創建它們;從列表中創建一個字典,並從字典中爲每個checkbutton分配一個變量,以便稍後檢查它的狀態。 問題是,即使我將變量設置爲0或1,我也嘗試更改狀態,但所有的checkbutton都以'alternate'狀態顯示,但似乎沒有任何幫助。ttk創建多個checkbuttons

y = 0 
     for x in get_dir_names(r'D:\SKL\test\win10'): 
      drv_check[x] = Variable() 
      drv_check[x].set(0) 
      center_window(150, 500, top_child) 
      drv = ttk.Checkbutton(child_frame, text=x, variable=drv_check[x]) 
      drv.grid(row=y, column=0, sticky=W) 
      y += 1 

參考

def get_dir_names(dir_path): 
    """Get names only of all directories from a given path (none recursive)""" 
    drv_list = [x for x in os.walk(dir_path).__next__()[1]] 
    drv_name = dict({}) 
    for y in drv_list: 
     tmp_ver = dir_path + r'\\' + y 
     drv_name[y] = (os.walk(tmp_ver).__next__()[1]).pop() 
    return drv_name 

回答

0

想通了,我做了一個「切換所有」按鈕,它似乎解決它,但它的怪異,它沒有工作之前。

這是我使用的功能:

def toggle_all(*args): 
     while True: 
      if toggle_all_var.get() == '1': 
       for name in drv_check: 
        drv_check[name].set('1') 
      elif toggle_all_var.get() == '0': 
       for name in drv_check: 
        drv_check[name].set('0') 

ttk.Checkbutton(drv_frame, text='Toggle all', variable=toggle_all_var).grid(row=y, column=0, sticky=W) 

而且我運行在一個新的線程功能。