下面的代码使用Tkinter。
目标
使用filedialog输入文件夹的路径,搜索并返回文件夹中的"mp3“文件列表,并将所有"mp3”放在一个OptionMenu中。
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()密码有效。
但它给了我超过1 OptionMenu。
发布于 2022-07-16 12:13:43
OptionMenu的第一个参数是要自己放置的小部件,第二个参数是StringVar,第二个参数是当前选定的值,第三个参数是OptionMenu的默认值,任何其他位置参数都将显示为选项。
因此,您只需要一个OptionMenu实例,将mp3作为参数传递给它,通过使用mp3作为参数,并以星号(*)作为前缀对argument expansion进行处理。
另外要提到的是,您通常不应该忽略任何错误--这就是为什么我删除了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()https://stackoverflow.com/questions/73003417
复制相似问题