2012-04-16 145 views
4

我正在尝试使文件选取器选择一个程序(可执行文件)。在Linux上的QFileDialog中筛选可执行文件

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

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

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

我在Ubuntu Maverick上使用PyQt 4.7.4。

+0

您是否尝试过或在QtCore.QDir.AllDirs? – 2012-04-16 16:58:03

+1

你的例子适合我,并显示文件。你甚至可以删除'Files'过滤器并使用'Executable'。不知道为什么你看到不同的结果。 – jdi 2012-04-16 17:13:16

+0

@MichaelDaum:我做到了。 – Max 2012-04-17 08:43:52

回答

0

我正在使用PyQt5,但必须做类似的事情,只有我想.txt文件。为了执行此操作,我使用了getFileOpenName()和filter =选项。它适用于我的目的。函数名称已从PyQt4更改为PyQt5,但下面的链接具有PyQt4替代品的名称。

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

的getOpenFileNameAndFilter(),getOpenFileNamesAndFilter()和 getSaveFileNameAndFilter()PyQt4中的QFileDialog的方法现在 被重新命名getOpenFileName(),getOpenFileNames()和 则GetSaveFileName(分别PyQt5)。在PyQt5中支持PyQt4的实现 getOpenFileName(),getOpenFileNames()和getSaveFileName()不是 。

相关问题