[英]TkInter inserts spurious wildcard in filename pattern matching
我試圖向用戶顯示適合特定模式的文件的文件打開對話框。 它們的格式為前綴_ *。后綴 ,其中星號表示通配符。
以下是我認為應該使用TkInter完成此操作的最小示例:
from tkinter.filedialog import askopenfilename
my_dir = 'C:\\path\\to\\some\\directory'
pattern = (('File type', 'prefix_*.suffix'),)
title = 'Title'
my_file = askopenfilename(initialdir=my_dir, filetypes=pattern, title=title)
但是,生成的對話框會在我的模式前面添加一個虛假的通配符,因此它現在看起來像* prefix _ *。后綴 。 這不是我的預期。
難道我做錯了什么? 關於TkInter中的這個接口應該如何工作,我找不到任何體面的文檔,所以它可能比我預期的更有限。 如果是這樣,是否有一個內置的Python庫可以支持這個特定的用例?
如果它與問題相關,我在Windows 10上安裝了32位Python。
filetypes
中的值被解釋為文件擴展名 ,而不是文件模式 。
從官方的tcl / tk文檔 (tkinter是一個圍繞tcl / tk的薄包裝):
-filetypes選項給出的filePatternList值是文件模式列表。 每個文件模式都是一個表單
typeName {extension ?extension ...?} ?{macType ?macType ...?}?
typeName是此文件模式描述的文件類型的名稱,是文件類型列表框中顯示的文本字符串。 extension是此文件模式的文件擴展名 。
它接着說:
由於各種平台上的模式匹配規則不同,為了確保可移植性,擴展中不允許使用通配符,除非在特殊擴展名“*”中。 允許使用沒有句號(例如“〜”)的擴展名,但可能無法在所有平台上運行。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.