python - 在一个文件类型中添加多个扩展名 mac - tkinter/filedialog/askopenfilename

标签 python macos tkinter filedialog

我正在尝试使用 tkinter.filedialog 在 Mac 中选择文件。

以这种方式它可以很好地处理一种文件类型:

filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx")])

但是,我想选择 xlsxxls 文件。我搜索了一下,发现了一个问题filedialog, tkinter and opening files .我使用类似的方式,但如果我更改为此方式,它不适用于 Mac:

filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx; *.xls")])

我应该如何更改以在文件对话框中选择 xlsxxls 文件?

最佳答案

看来你必须用空格而不是来分隔通配符模式;(在Python 3.5.1上验证):

from tkinter import filedialog

# add `, initialdir="..."` to set the initial directory shown in the dialog
filedialog.askopenfilename(filetypes=[("Excel files", ".xlsx .xls")])

注意:

  • 虽然 "*.xlsx *.xls" 也可以工作(至少在 Windows 和 macOS 上),但初始的 * 不是必需的。[ 1]
  • .**.* 是否有效(无过滤器)似乎取决于平台; 省略 filetypes 在这种情况下是更好的选择。
  • 类似地,匹配部分 base 文件名(如 foo.txtfoo*.txt)的行为似乎是平台相关:在 Windows 上,这些确实有效,带有前缀 *(*foo.txt*foo*.txt),而在 macOS 上,它们似乎不匹配。

如果依赖于平台的行为改为/也链接到不同的 tkinter 版本,请告诉我们。


[1] Jakub Bláha报告说 "*.xlsx *.xls" 在 Windows 10 版本 1903 上的 Python 3.7.4 中实际上对他不起作用(尽管我没有看到同样的问题);为了安全起见,如果不需要,请省略 *

关于python - 在一个文件类型中添加多个扩展名 mac - tkinter/filedialog/askopenfilename,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44403566/

相关文章:

python - 如何分组然后将结果写入 csv(以及更多)

ios - NSMutableString appendString vs appendFormat,哪个效率更高?

java - 请求关注 JavaFX 阶段不会更改 macOS 左上角菜单栏标题

python - 创造众多独特的事件

python - 是否可以在 Tkinter 中获取小部件设置?

python - 如何在 App Engine 上使用 lxml 版本 3.7.3?

Python vtkInterface0.9.3 库示例不起作用

python - 为什么我不能用python下载这个网页?

ios - macos - 在 macOS 10.13 上安装 xcode 9.2

python - 如何设置 Margin 或 Offset 标签?