2017-03-24 90 views
1

我正在嘗試將多個文件夾名稱添加到選項菜單。以下代碼僅向列表添加一個文件夾名稱,但我想要在該目錄中添加所有文件夾名稱。將多個文件夾名稱從目錄添加到OptionMenu Python

var = StringVar() 
os.chdir('C:\\Users\\mhoban') 
all_subdirs = [d for d in os.listdir('.') if os.path.isdir(d)] 
for dirs in all_subdirs: 
    dir = os.path.join('C:\\Users\\mhoban', dirs) 
    os.chdir(dir) 
    current = os.getcwd() 
    new = str(current).split("\\")[3] 

opt1 = OptionMenu(app, var, new) 
opt1.grid(row=0, column=1, padx=10, pady=10) 
opt1.configure(width = 40, bg = "White") 

回答

3

你需要建立的菜單選項的列表,然後將其解壓在那裏你傳遞new的時刻:

options = [] 
for dirs in all_subdirs: 
    ... # same 
    options.append(str(current).split("\\")[3]) 

開箱options

opt1 = OptionMenu(app, var, *options) 

注:options將與all_subdirs相同,因此您的處理似乎無法實現任何效果。改爲使用all_subdirs

+0

我在這一行上得到一個sythax錯誤「opt1 = OptionMenu(app,var,* options)」 –

+1

@Peter Wood,算上你的括號,你錯過了一個。 'options'列表與'all_subdirs'相同,所以OP可以解壓縮而不需要迭代? – CommonSense

+0

@彼得伍德,是的,沒問題。但是,我認爲值得在你的回答中提到'all_subdirs'已經是一個帶dir-names的列表,所以根本不需要在另一個列表中。 'opt1 = OptionMenu(app,var,* all_subdirs)' – CommonSense

相關問題