PySimpleGUI中能否通过FileSaveAs创建新文件夹?
实现PySimpleGUI「另存为」时创建新文件夹的方案
方法1:利用原生对话框的内置功能
PySimpleGUI的FileSaveAs元素底层调用对应GUI框架的原生另存为对话框,在Windows、macOS和多数Linux桌面环境中,原生对话框本身就支持创建新文件夹:
- Windows:对话框左侧有「新建文件夹」按钮,或右键空白处选「新建>文件夹」
- macOS:对话框工具栏有「新建文件夹」按钮,或按
Cmd+Shift+N - Linux(GTK):右键空白处选「新建文件夹」
如果你的FileSaveAs没显示该功能,检查是否设置了no_window=True这类禁用原生对话框的参数。正常使用示例代码如下:
import PySimpleGUI as sg layout = [ [sg.FileSaveAs('另存为', key='-SAVE-')], [sg.Button('确认'), sg.Button('退出')] ] window = sg.Window('测试另存为', layout) while True: event, values = window.read() if event in (sg.WIN_CLOSED, '退出'): break if event == '确认': save_path = values['-SAVE-'] if save_path: with open(save_path, 'w') as f: f.write('测试内容') sg.popup('文件保存成功') window.close()
方法2:手动拆分「选文件夹+输文件名」
如果原生对话框的新建文件夹功能不符合需求,可拆分流程:先通过FolderBrowse让用户选择或创建文件夹(该元素本身支持创建新文件夹),再输入文件名,最后拼接完整路径:
import PySimpleGUI as sg import os layout = [ [sg.FolderBrowse('选择文件夹', key='-FOLDER-'), sg.Input(key='-FOLDER_PATH-')], [sg.Text('文件名:'), sg.Input(key='-FILENAME-')], [sg.Button('保存'), sg.Button('退出')] ] window = sg.Window('自定义另存为', layout) while True: event, values = window.read() if event in (sg.WIN_CLOSED, '退出'): break if event == '保存': folder = values['-FOLDER_PATH-'] filename = values['-FILENAME-'] if not folder or not filename: sg.popup('请选择文件夹并输入文件名') continue if not os.path.splitext(filename)[1]: filename += '.txt' save_path = os.path.join(folder, filename) with open(save_path, 'w') as f: f.write('自定义路径保存的内容') sg.popup('文件保存成功') window.close()
注意事项
- 方法1依赖系统原生对话框,兼容性最好,推荐优先使用
- 方法2更灵活,可自定义文件名规则、文件夹创建逻辑等
内容的提问来源于stack exchange,提问作者dgrb
相关产品推荐
相关产品推荐

