Joe*_*Joe 5 python macos filedialog tkinter
我试图用来tkinter filedialog在Mac中选择文件。
这种方式对一种文件类型可以正常工作:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx)])
Run Code Online (Sandbox Code Playgroud)
但是,我要选择xlsx或xls文件。我搜索并找到了问题文件对话框,tkinter和打开文件。我使用类似的方式,但是如果我更改为Mac,则无法在Mac上使用:
filedialog.askopenfilename(filetypes=[("Excel files", "*.xlsx; *.xls")])
如何更改在文件对话框中选择xlsx或xls文件?
mkl*_*nt0 10
看来您必须用空格而不是通配符模式;(在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")])
Run Code Online (Sandbox Code Playgroud)
注意:
"*.xlsx *.xls"也可以工作(至少在Windows和macOS上),但*不需要初始。[1] .*或*.*作品(无过滤器)似乎是依赖于平台的; 在这种情况下,省略 filetypes是更好的选择。foo.txt或foo*.txt)似乎与平台有关:在Windows上,它们确实起作用,但带有前缀*(*foo.txt和*foo*.txt),而在macOS上,它们似乎完全不匹配。如果与平台相关的行为改为/也针对不同的tkinter版本,请告知我们。
[1] JakubBláha报告说"*.xlsx *.xls"在Windows 10版本1903上的Python 3.7.4中实际上对他不起作用(尽管我看不到相同的问题);为了安全起见,*如果不需要,请省略。
小智 8
至少在 Windows 上,如果您希望能够打开多种文件类型但每次只能打开一种文件类型,那么您的代码必须如下所示:
filedialog.askopenfilename(filetypes=[("Excel file","*.xlsx"),("Excel file 97-2003","*.xls")])
Run Code Online (Sandbox Code Playgroud)
如果您希望能够同时选择两种文件类型而不在它们之间切换,则它们需要具有相同的名称。
filedialog.askopenfilename(filetypes=[("Excel file","*.xlsx"),("Excel file", "*.xls")])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6602 次 |
| 最近记录: |