如何用Tkinter Combobox显示指定父文件夹下所有子文件夹并存储
解决Tkinter Combobox显示指定文件夹下所有子文件夹的问题
你当前代码的问题在于直接将主文件夹路径作为Combobox的唯一选项,要实现列出soundpacks下所有子文件夹的功能,需要遍历目标目录并筛选出其中的文件夹,再将这些文件夹作为选项传入Combobox。
修改后的完整代码
import tkinter as tk from tkinter import ttk from PIL import Image, ImageTk import os root = tk.Tk() root.resizable(width=False, height=False) root.geometry("400x600") root.title("VibesPlus") logo = Image.open('img/download.png') logo = ImageTk.PhotoImage(logo) logo_label = tk.Label(root, image=logo) logo_label.pack() folder_path = "C:/Users/konel/Documents/Source/VibesPlus/soundpacks" # 获取指定路径下的所有子文件夹(完整路径) subfolders = [] if os.path.exists(folder_path): # 遍历目录下的所有项,筛选出文件夹 for name in os.listdir(folder_path): full_path = os.path.join(folder_path, name) if os.path.isdir(full_path): subfolders.append(full_path) # 如果只需要显示文件夹名称而非完整路径,替换上面的subfolders生成逻辑为: # subfolders = [name for name in os.listdir(folder_path) if os.path.isdir(os.path.join(folder_path, name))] # 将子文件夹列表作为Combobox的选项 combo = ttk.Combobox(root, height=20, width=200, values=subfolders) combo.pack() root.mainloop()
关键说明
- 用
os.path.exists(folder_path)先检查目标路径是否存在,避免路径无效导致报错 - 通过
os.listdir(folder_path)遍历目录下的所有项,再用os.path.isdir()判断是否为文件夹 - 可以选择传入完整路径或仅文件夹名称到Combobox的
values参数,根据需求调整
内容的提问来源于stack exchange,提问作者kone
相关产品推荐
相关产品推荐

