2015-04-23 81 views
0

我在用QFileDialog在PyQt4中保存具有擴展名的文件(獲取文件的路徑並添加擴展名)時出現問題。我的Python代碼看起來像這樣:無法在QFileDialog中添加擴展名到文件

dialog = QtGui.QFileDialog() 
dialog.setDefaultSuffix(".json") 
file = dialog.getSaveFileName(None, "Title", "", "JSON (.json)") 

它的工作原理,路徑是正確的,對話框的標題和過濾器是在對話窗口中,但第二行被忽略。文件沒有任何擴展名。

如何默認添加擴展名?我究竟做錯了什麼?

+0

嘗試:'dialog.setDefaultSuffix(「json」)' – tema

回答

3

上的QFileDialog實例調用setDefaultSuffix當您使用static functions沒有效果。這些函數將創建它們自己的內部文件對話框,因此可以在其上設置的唯一選項是通過參數提供的任何選項。

當然,setDefaultSuffix會工作,如果是直接顯示的QFileDialog實例:

dialog = QtGui.QFileDialog() 
dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden) 
dialog.setDefaultSuffix('json') 
dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave) 
dialog.setNameFilters(['JSON (*.json)']) 
if dialog.exec_() == QtGui.QDialog.Accepted: 
    print(dialog.selectedFiles()) 
else: 
    print('Cancelled') 

但請注意,你不能用這種方法獲得一個本地文件對話框。

如果被正確地指定的文件名的過濾器(見上文,和 Barmak Shemirani's answer),本地文件對話框可以提供自動選擇的文件名擴展的裝置(這當然是用KDE在Linux的情況下,但我不瞭解其他平臺)。

1

嘗試用*.json代替.json

file = dialog.getSaveFileName(None, "Title", "", "JSON (*.json)"); 
相關問題