2014-07-23 34 views
0

我使用靜態方法:設置QFileDialog

path = QtGui.QFileDialog.getSaveFileName(self, SAVE_TO_STR, NAME_STR, 'CSV(*.csv)') 

從哪裏獲得路徑full_path \ some_name.csv

,但我需要設置不同的語言按鈕和對話框的標籤,所以我一直在看文檔和發現,我不能做到這一點與靜態方法和我想出這個代碼:

ddd = QtGui.QFileDialog(self, SAVE_TO_IN_OTHER_LANGUAGE_STR, NAME_STR, 'CSV(*.csv)') 
    ddd.setAcceptMode (QtGui.QFileDialog.AcceptSave) 
    ddd.setLabelText(QtGui.QFileDialog.Accept, "Save - in other language") 
    ddd.setLabelText(QtGui.QFileDialog.Reject, "Cancel - in other language") 
    ddd.setLabelText(QtGui.QFileDialog.LookIn, "Look in - in other language") 
    if ddd.exec_(): 
     path = QtCore.QString(ddd.selectedFiles()[0]) 

我想設置它看起來像第一次那麼我的問題是:

  1. 我得到的路徑沒問題,但在最後沒有.csv,所以它保存了沒有擴展名的文件。 我應該在路徑的末尾手動添加.csv嗎?

  2. 當我選擇保存位置並點擊文件夾時,「保存」按鈕變爲「打開」。如何將該按鈕文本更改爲其他語言的「打開」?

  3. 對話框左側的文件夾列表並不複雜,因爲當我使用QtGui.QFileDialog.getSaveFileName()時,它僅顯示我的電腦和用戶,而不是顯示我的電腦下的收藏夾和分區的現代樹。

回答

0

1)路徑我得到的是好的,但在最後丟失的.csv,所以它保存文件, 沒有擴展名。我應該在路徑的末尾手動添加.csv嗎?

回答:我想你不應該在路徑的末尾手動添加.csv。在PyQt API中有這個解決方案來解決它,使用QFileDialog.setDefaultSuffix (self, QString suffix);

pathQFileDialog = QtGui.QFileDialog(self) 
pathQFileDialog.setAcceptMode(QtGui.QFileDialog.AcceptSave) 
pathQFileDialog.setNameFilter('CSV(*.csv)') 
pathQFileDialog.setDefaultSuffix('csv') 

參考http://pyqt.sourceforge.net/Docs/PyQt4/qfiledialog.html#setDefaultSuffix


2)當我選擇保存位置,點擊文件夾, 「保存」 按鈕 變爲 「開放」。如何在其他 語言中將該按鈕文本更改爲「打開」?

:我在文件qfiledialog.cpp PyQt的號在Qt(C++)的意見,我發現你的問題在法void QFileDialogPrivate::_q_updateOkButton()在行2886和2888.之間這迫使「&打開」標籤;

button->setEnabled(enableButton); 
if (acceptMode == QFileDialog::AcceptSave) 
    button->setText(isOpenDirectory ? QFileDialog::tr("&Open") : acceptLabel); 

參考https://qt.gitorious.org/qt/qt/source/57756e72adf2081137b97f0e689dd16c770d10b1:src/gui/dialogs/qfiledialog.cpp#L2796-2888


3)文件夾在對話框的左側列表並不複雜,因爲當我使用 QtGui.QFileDialog.getSaveFileName(),那隻能說明我的電腦和 用戶,而不是現代樹與我的最愛和分區我的 電腦。

:因爲在Windows,Mac OS X和Symbian^3,這個靜態函數(QtGui.QFileDialog.getSaveFileName())將使用本地文件對話框而不是QFileDialog。

參考:pyqt.sourceforge.net/Docs/PyQt4/qfiledialog.html#getSaveFileName


問候,