2012-11-23 114 views
0

現在我正在使用Tkinter來提示用戶輸入文件。Python - 保持Tkinter窗口打開?

Tk().withdraw() # keep the root window from appearing 
file_path = askopenfilename() # show dialog box and return file path 

# check if extension is valid 

如果用戶選擇了錯誤的文件類型,我會用新窗口重新提示他們。

有沒有辦法,而是保持相同的tkinter窗口打開,除非選擇的文件是有效的?

因此,不是這樣的:

# 1) prompt user to open file 
# 2) close file browser window 
# 3) check if extension is valid 
# 4) if not, print error and re-prompt user with new browser window 

我想這樣做:

# 1) prompt user to open file 
# 2) check if extension is valid while keeping window open 
# 3) if not, print error, re-prompting with same window 

任何幫助表示讚賞。

回答

1

如果您希望用戶打開特定的文件類型,請使用參數filetypes。它需要一個文件類型定義列表,您將其指定爲描述和擴展名:

filepath = askopenfilename(filetypes = [ 
    ('Text Files', '.txt'), 
    ('Python Scripts', '.py'), 
    ('INI Files', '.ini') 
]) 
+0

正是我所需要的。 – user1764386

0

您可以將文件瀏覽器窗口設置爲僅顯示您想要用戶選擇的文件類型,但他們可以通過選擇類型下拉框來避免這種情況。然而,您可以在文件選擇(用戶單擊確定以選擇文件並關閉文件瀏覽器窗口)時檢查文件擴展名是否是您想要的類型之一,如果不是簡單清除文件路徑變量並調用文件瀏覽器再次打開功能。這樣他們就被困在選擇一個文件,直到他們選擇正確的文件類型。然而,這會出現問題,他們可能不知道爲什麼他們回到了他們的起始位置,因此您可能希望在重新打開文件瀏覽器窗口之前添加一個彈出窗口或其他內容,以使其更加便於用戶使用。

相關問題