PyQt4文件选择小部件

25
我想使用QT设计师创建一个对话框,其中包含一个需要选择文件的部分。
现在,我知道QFileDialog存在,我可以编写程序来实现我想要的功能。 但我是否也可以在QT设计师中完成这个操作呢?
有没有一种方法在QT设计师中获取“文件选择”小部件? 或者,我记得这些按钮,它们将所选文件作为标题,并通过QFileDialog允许用户选择另一个文件。
那么,是否有现成的解决方案,还是我必须自己编程?
3个回答

39

据我所知,Qt设计器中没有可用的文件对话框。但是您可以通过几行代码轻松实现它。

假设您有一个名为pushButton的简单按钮,并且路径应存储在lineEdit中。

def selectFile():
    lineEdit.setText(QFileDialog.getOpenFileName())

pushButton.clicked.connect(selectFile)

[编辑] 只是好奇,您是否使用KDE?如果是的话,那么您可以使用KUrlRequester来实现这一点。它可以轻松配置以支持从文件到URL到目录的任何内容。


嘿,我也要做同样的事情,但是我遇到了一个错误:NameError: global name 'QFileDialog' is not defined - lkkkk
1
@Latik:你需要导入它,当然,from PyQt4.QtGui import QFileDialog - Wolph
KUrlRequester非常方便,但如果我在Windows上安装KDE,它是否能够正常工作(可用),或者它只能在*NIX系统上工作? - Agi Hammerthief
1
在PyQT5中,导入将如下所示:from PyQt5.QtWidgets import QFileDialog - Bassem Shahin
1
在 PySide 中,有相同的函数(getOpenFileName),但它返回一个元组而不是字符串。因此,我应该使用索引,例如 getOpenFileName()[0]。我不知道 PyQt 中会是什么样子。 - Kim
显示剩余2条评论

13

QFileDialog 存在于 QtGui 中。至少在我的版本4.4中,可能更早的版本也有。我认为它不在Designer中的原因是它会打开自己的窗口而不是作为一个小部件放在另一个窗口上。

QTDesigner的文档可能需要改进,并且至少要暗示它的存在。

实例化它并运行 show 命令。它会马上弹出并默认到 /

import QtGui
self.fileDialog = QtGui.QFileDialog(self)
self.fileDialog.show()

5
您可以使用 QFileDialog 类中的方法 getOpenFileName()QFileDialog.getOpenFileName() 将返回文件路径和所选文件类型。
我得到了这个:('C:/Users/Sathsara/Desktop/UI/Test/test.py','所有文件 (*)')。
要仅获取文件路径,请使用 QFileDialog.getOpenFileName()[0]
示例代码:
def selectFile():
   print(QFileDialog.getOpenFileName()[0])


dlg.locationBtn.clicked.connect(selectFile)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接