【问题标题】:Setting QFileDialog设置 QFileDialog
【发布时间】:2014-07-29 19:08:11
【问题描述】:

我使用的是静态方法:

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() 时,它只显示我的电脑和用户,而不是我的电脑下带有收藏夹和分区的现代树。

【问题讨论】:

    标签: python pyqt4 qfiledialog


    【解决方案1】:

    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) 当我选择保存位置并单击文件夹时,“保存”按钮 变为“打开”。如何在其他中将该按钮文本更改为“打开” 语言?

    答案:我对 PyQt 的看法,否。在 Qt (C++) 文件 qfiledialog.cpp 中,我在方法 void QFileDialogPrivate::_q_updateOkButton() 的 2886 和 2888 之间的行中发现了您的问题。它强制“&Open”标签;

    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


    问候,

    【讨论】:

      猜你喜欢
      • 2011-04-27
      • 1970-01-01
      • 2022-11-10
      • 2010-12-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-18
      • 2015-07-18
      相关资源
      最近更新 更多