2014-09-28 117 views
4

我使用Tkinter與Python 2.7.6創建GUI。tkinter選項菜單 - 動態更新選項

我有一個下拉菜單,創建和初步禁止用下面的代碼:

self.dropdown = Tkinter.OptionMenu(self, self.dropdownVar, "Select SED...") 
    self.dropdown.grid(column=0,row=1) 
    self.dropdown.configure(state="disabled") 

在用戶選擇一個目錄,我調用一個函數onEnterDir()然後把它在該目錄中的文件列表。所以,我有一個名爲dirFiles的變量中的文件列表。

我想要的是,然後在下拉菜單中使用此dirFiles列表中的項目更新選項。我將如何做到這一點?

我的問題不同於其他人在這裏,因爲我只是想更新項目列表self.dropdown顯示。它不依賴於任何其他小部件。我有一個我想要放入的Python列表。我該怎麼做?

+0

這不是重複! – 2014-09-28 12:26:14

+2

我相信你引用了錯誤的鏈接。您的問題的舊答案在這裏:http://stackoverflow.com/a/17252390/400286 – mjhm 2014-09-28 13:42:02

回答

3

您可以使用同樣的技術在the answer你在問題中提到:

例如:

from Tkinter import * 
from tkFileDialog import askdirectory 
import os 

def onEnterDir(dropdown, var): 
    path = askdirectory() 
    if not path: 
     return 
    filenames = os.listdir(path) 
    dropdown.configure(state='normal') # Enable drop down 
    menu = dropdown['menu'] 

    # Clear the menu. 
    menu.delete(0, 'end') 
    for name in filenames: 
     # Add menu items. 
     menu.add_command(label=name, command=lambda: var.set(name)) 


root = Tk() 
dropdownVar = StringVar() 
dropdown = OptionMenu(root, dropdownVar, "Select SED...") 
dropdown.grid(column=0, row=1) 
dropdown.configure(state="disabled") 
b = Button(root, text='Change directory', 
      command=lambda: onEnterDir(dropdown, dropdownVar)) 
b.grid(column=1, row=1) 
root.mainloop() 
0

不得不self.dropdown首先設置爲活動狀態,然後將其在列表中像這樣的選項:

self.dropdown.configure(state="active") 
    for fi in dirList: 
     self.dropdown['menu'].add_command(label=fi, command=Tkinter._setit(self, fi)) 

命令位是什麼讓我失望。