【问题标题】:Filtering executable files in QFileDialog on Linux在 Linux 上的 QFileDialog 中过滤可执行文件
【发布时间】:2012-04-28 00:04:44
【问题描述】:

我正在尝试制作一个文件选择器来选择一个程序(可执行文件)。

我对 QDir 和 QFileDialog 文档的理解是,下面应该显示一个只有可执行文件的文件对话框。但是,即使目录中有可执行文件,它也根本不显示文件(也没有目录)。

    self.browseDialog = QtGui.QFileDialog()
    self.browseDialog.setFilter(QtCore.QDir.Executable | QtCore.QDir.Files)
    self.browseDialog.exec_()

我做错了吗?这可以实现吗?我还想做一些更复杂的事情:显示可执行文件以某些扩展名结尾。

我在 Ubuntu Maverick 上使用 PyQt 4.7.4。

【问题讨论】:

  • 你在 QtCore.QDir.AllDirs 中尝试过 or-ing 吗?
  • 您的示例对我来说工作正常并显示文件。您甚至可以删除Files 过滤器,只使用Executable。不知道为什么您会看到不同的结果。
  • @jdi,您也必须使用Files 过滤器。文档清楚地表达了这一点:Executable 值需要与 Dirs 或 Files 结合使用。
  • 但请注意,如果您使用其中一种静态方法(如 getOpenFileName()),您必须将过滤器作为字符串传递,而 not 作为标志。

标签: qt pyqt


【解决方案1】:

我正在使用 PyQt5,但必须做类似的事情,只是我只想要 .txt 文件。为此,我使用了 getFileOpenName() 和 filter= 选项。它对我的目的很好。函数名称已从 PyQt4 更改为 PyQt5,但下面的链接包含 PyQt4 替代品的名称。

http://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html

getOpenFileNameAndFilter()、getOpenFileNamesAndFilter() 和 PyQt4 的 QFileDialog 的 getSaveFileNameAndFilter() 方法现在有了 已重命名为 getOpenFileName()、getOpenFileNames() 和 getSaveFileName() 分别在 PyQt5 中。 PyQt4 的实现 getOpenFileName()、getOpenFileNames() 和 getSaveFileName() 不是 PyQt5 支持。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-07
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-09
    • 2011-11-13
    相关资源
    最近更新 更多