PyQt4 文件选择组件

25 投票
3 回答
60156 浏览
提问于 2025-04-16 00:56

我想用QT4(通过QT设计器)制作一个对话框,这个对话框里需要有一个选择文件的部分。

我知道有QFileDialog这个东西,我可以编写代码来实现我想要的功能。

但是,我能不能直接在QT设计器里做到这一点呢?

有没有什么方法可以在QT设计器中添加一个“选择文件”的小部件?

我记得有那种按钮,可以显示选中的文件名,还有一个小箭头,用户可以通过QFileDialog选择其他文件。

所以说,有现成的解决方案吗?还是说我得自己编程来实现?

3 个回答

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)
13

QFileDialog 是在 QtGui 里存在的。至少在我用的 4.4 版本中是这样,可能更早的版本也有。我觉得它不在设计器里的原因是因为它会打开一个自己的窗口,而不是作为一个可以放在其他窗口上的小部件。

QTDesigner 的文档可以做得更好,至少应该提到它的存在。

你只需要实例化它,然后运行 show 命令。它就会弹出来,默认显示的是 /

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

据我所知,Qt设计器里没有文件对话框的选项。不过,你可以用几行代码轻松实现这个功能。

假设你有一个简单的按钮,叫做pushButton,路径应该存储在lineEdit里。

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

pushButton.clicked.connect(selectFile)

[编辑]我只是想问一下,你是不是在用KDE?如果是的话,你可以使用KUrlRequester来实现这个功能。它可以很方便地配置,支持文件、网址和目录等各种类型。

撰写回答