2013-04-18 102 views
2

我目前正在使用Tkinter在python中編寫一個圖形用戶界面,其中用戶能夠使用擴展名「.espace」將GUI的狀態保存在其目錄中。限制使用tkFileDialog.asksaveasfile時保存的文件擴展名

filename = tkFileDialog.asksaveasfilename(defaultextension=".espace")

如果用戶指定一個不同的文件擴展名,則文件將保存與他們指定的擴展。無論如何要防止這一點?這樣他們完全限制在使用擴展名「.espace」保存文件?

+0

是不是你的代碼實際上是打開文件並寫入它?你不能簡單地檢查'filename'的值,並且如果它不正確會產生錯誤。 OTOH,如果用戶想要更改後綴,他們不應該被允許這樣做嗎?這是他們的數據和他們的系統。作爲一名用戶,如果我不能使用任何我想要的名字,我都會很沮喪。如果他們想要一個不同的名字,你所要做的就是強迫他們根據你的規則保存它,然後在你的控制之外重命名這個文件。 –

回答

5

您可以使用'文件類型'選項指定文件類型。以下示例會將保存對話框中的文件類型下拉列表更改爲.espace和所有文件。

filename = tkFileDialog.asksaveasfilename(defaultextension=".espace", filetypes=(("espace file", "*.espace"),("All Files", "*.*"))) 

我還沒有找到一個選項,使用asksaveasfilename來限制使用其他文件擴展名。我認爲你可以寫一個循環,強制用戶使用該擴展名:

import os 
import sys 
ext = "" 
while ext != ".escape": 
    filename = tkFileDialog.asksaveasfilename(defaultextension=".espace", filetypes=(("espace file", "*.espace"),("All Files", "*.*"))) 
    file,ext = os.path.splitext(filename) 
相關問題