EasyGUI fileopenbox()如何正确配置多文件类型过滤
问题根源
easygui.fileopenbox()的filetypes参数规则为:传入的顶层可迭代对象中,每一个独立元素对应文件选择器下拉栏里的一个单独筛选项。
你当前传入的('*.png', '*.jpg')将png、jpg两个后缀拆成了两个独立的顶层元素,函数会将其识别为两个独立筛选项,因此无法实现多后缀合并筛选的效果。
修复方案
要把同属一类的多个文件后缀归为同一个筛选项,有两种标准写法:
写法1:带自定义筛选名称(推荐)
用子列表/子元组存放单个筛选项的配置:第一个元素为筛选项的显示名称,后续元素为该选项要匹配的所有后缀通配符,示例代码:
import easygui selected_file = easygui.fileopenbox( title='Select image', filetypes=[ ["Image files", "*.png", "*.jpg", "*.jpeg", "*.bmp"], ["All files", "*.*"] # 可按需增加其他筛选项 ] )
运行后下拉栏会出现Image files选项,选中时可同时显示所有png、jpg等格式的图片文件。
写法2:无自定义名称的简写形式
如果不需要给筛选项加显示名,可以把同组的多个后缀写在同一个字符串里,后缀之间用分号;分隔,作为顶层元组/列表的单个元素:
selected_file = easygui.fileopenbox( title='Select image', filetypes=("*.png;*.jpg;*.jpeg;*.bmp", "*.*") )
注意事项
- 不要把不同后缀拆成顶层元组/列表的独立元素,否则会生成多个独立筛选项
- 通配符要严格按照
*.后缀的格式书写,不要漏写* - 建议始终在筛选列表最后加上
*.*的所有文件选项,避免用户找不到非指定后缀的目标文件
内容的提问来源于stack exchange,提问作者user17279264
相关产品推荐
相关产品推荐

