下面的代码我用的是Tkinter
使用filedialog输入文件夹路径搜索并返回"mp3"列表文件从文件夹中取出并放上所有的mp3">
from tkinter import StringVar, filedialog
import os
import tkinter
root = tkinter.Tk()
path = filedialog.askdirectory()
try:
if not path:
print('Canceled')
else:
mp3 = [fn for fn in os.listdir(path) if fn.lower().endswith('.mp3') and os.path.isfile(os.path.join(path, fn))]
for filename in mp3:
clicked = StringVar()
tkinter.OptionMenu(root, clicked, filename).pack()
except:
pass
root.mainloop()
代码运行正常
但是它给了我不止一个选项菜单
OptionMenu
的第一个参数是要放置自己的小部件,第二个是要放置当前选定值的StringVar
,第三个是OptionMenu
的默认值,其他任何位置参数将显示为选项。
因此,您只需要一个OptionMenu
实例,您将mp3
作为参数传递给它,您可以通过使用mp3
作为参数进行参数扩展,但使用星号(*
)作为前缀。
另外要提到的是,您通常不应该默默地忽略任何错误-这就是为什么我删除了try
/except
。这是正确的代码:
from tkinter import StringVar, filedialog
import os
import tkinter
root = tkinter.Tk()
path = filedialog.askdirectory()
if not path:
print('Canceled')
else:
mp3 = [fn for fn in os.listdir(path) if fn.lower().endswith('.mp3') and os.path.isfile(os.path.join(path, fn))]
clicked = StringVar()
tkinter.OptionMenu(root, clicked, mp3[0], *mp3).pack()
root.mainloop()