2011-06-08 77 views
3

關於PyQt4的如何知道文件的類型,保存,使用QFileDialog

我更喜歡讓用戶看到Windows/Mac的本地對話框,使用的則GetSaveFileName靜態方法在QFileDialog。

我的問題是,如果用戶沒有在保存文件名稱中鍵入文件擴展名(比如選擇圖像類型來保存文件時),那麼我沒有辦法檢查看到他們想保存什麼類型的文件。

如何創建一個對話框來保存具有過濾器的文件,以及如何知道用戶選擇了哪個過濾器?

例如:

files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)" 
file = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '', files_types) 

隨着var文件我只要該文件的路徑,但我不知道什麼格式的用戶選擇。

所以,我想知道如何獲得擴展名或用戶選擇的文件類型。 是否有使用此方法獲取selectedFilter?

非常感謝!

+0

我無法重現此問題。即使我將擴展名保存在保存文件名中,QFileDialog也會將選定的文件類型擴展名附加到返回的文件名。你能再發一點你的代碼嗎?有各種選項會影響返回的文件。我想知道這些選項中的一個是否設置不正確。 – 2011-06-08 22:11:59

回答

4

可以使用getSaveFileNameAndFilter()方法:

filename, filter = QtGui.QFileDialog.getSaveFileNameAndFilter(self, 'Save file', '', files_types) 

(在PySide然而,getSaveFileNameAndFilter()不存在,並已getSaveFileName()行爲這樣,我不知道這是否也是PyQt的API版本的情況。 2,這是Python 3的默認設置)

0

它是不可能的。

做到這一點的唯一方法是創建一個泛型對話框,但另一方面,您將丟失漂亮的本機窗口。

+2

不是真的,這是可能的,看到我的答案。 – Steven 2011-09-15 16:05:21