You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.05 08:57:06