Skip to main content
 首页 » 编程设计

python之使用 PySimpleGui 加载多个文件

2024年09月03日30kevingrace

是否可以使用 PySimpleGUI 在一行中一次选择多个文件路径

sg.PopupGetFile('Unique File select') 

Only one file selectable

docs PopupGetFile(message, Message to show in the window
default_path='', Path browsing should start from
default_extension='', Which filetype is the default
save_as=False, Determines which dialog box stype to show
file_types=(("ALL Files", "."),), Which filetypes are displayed
no_window=False, if True no window is displayed except the dialog box
size=(None,None), Size of window
button_color=None, Color of buttons
background_color=None, Color of window background
text_color=None, Color of text in window
icon=DEFAULT_WINDOW_ICON, Icon to show on taskbar
font=None, Font to use
no_titlebar=False, If True does not display a titlebar
grab_anywhere=False, if True can grab window anywhere to move it
keep_on_top=False, if True window will be on top of others
location=(None,None)) Location on screen to show window

没有循环模式的多个文件的任何 API?

请您参考如下方法:

这是您正在寻找的“单线”解决方案....

它允许您从对话框中选择多个文件,并将文件列表打印为列表。为了安全起见,您应该通过查看 event

的值来检查以确保单击了 OK 按钮
import PySimpleGUI as sg 
 
event, values = sg.Window('Window Title').Layout([[sg.Input(key='_FILES_'), sg.FilesBrowse()], [sg.OK(), sg.Cancel()]]).Read() 
 
print(values['_FILES_'].split(';')) 

[ 2022 年 5 月编辑 ]

好吧,好吧,我们又回到了 SO,这里有一个非常熟悉的问题,这里什么都没有死……一切都永远存在,包括旧问题和旧解决方案,不再是“问题”。

虽然这是一个有趣的解决方案,但它是从 2019 年 4 月开始的,距 PySimpleGUI 首次发布仅 9 个月。这个答案是古老的,它有效,但它在教导糟糕的惯例和方法。

此讨论使用非 PEP8 popup 调用,它使用不应使用的 Window.Layout 方法,以及 PySimpleGUI 项目推荐的关键命名约定现在不匹配。

我在命名原始弹出窗口调用时不知道 PEP8 的存在,一旦我发现这个相当严重的错误,我花了一段时间才为所有创建的确实遵守 PEP8 约定的别名获取别名。

PySimpleGUI 文档和演示程序保持最新...StackOverflow 上的这些答案不是。不可能在互联网上找到所有发布答案的地方并修复它们。但是 GitHub 上的文档和示例程序 是可以维护的...而且确实如此。

强烈希望 PySimpleGUI 向后兼容并因此启用在 PySimpleGUI 发布的第一个月编写的程序的一个“问题”是它不禁止使用不再推荐的调用。

新答案

在 GitHub 上提问

今天,在 2022 年,我回答这个问题的方式是首先说请通过 GitHub 上的问题提问。不仅仅是这个项目,所有的项目,去项目的主页问问开发者。寻找答案时,去那里寻找答案。您可能会在这里找到答案,但这可能需要付出代价。从项目的文档开始,然后从那里展开。

“用谷歌搜索”并不是最好的编程方法。它会让您找到陈旧的、可能是错误的信息。他们的算法很愚蠢,而你,读者,不是。

弹窗

popup_get_file 是弹出调用的符合 PEP8 的名称,应该是使用的名称。它现在有一个名为 multiple_files 的参数,当设置为 True 时将允许您的用户选择多个文件。查看主文档中的调用引用选项卡了解详细信息 - http://www.PySimpleGUI.org

您会发现该参数的描述是:

如果为 True,则允许选择多个文件,这些文件以 ';' 返回在每个文件名之间

最终答案...

files = sg.popup_get_file('Unique File select', multiple_files=True) 

这就是您今天执行操作以通过弹出调用获取多个文件的方式。

感谢您的关注

这是一个冗长的编辑,但它是一个非常广泛意义上的重要主题。我开始想请 google Sprite 快速回答,但快速回答并不能造就可靠的产品,甚至不是好的产品。