PySide和Python - 如何浏览文件夹并写入文件名?

时间:2015-07-27 08:47:17

标签: python pyside qfiledialog

我想按一个按钮而不是打开文件浏览器并在标签中记下所选文件。我有按下按钮时调用的这个功能:

    @Slot()
    def browse_folder(self):
        self.fname = QtGui.QFileDialog.getOpenFileName()
        self.statusLabel.setText(self.fname)

然而,我收到错误:

TypeError: 'PySide.QtGui.QLabel.setText' called with wrong argument types:
  PySide.QtGui.QLabel.setText(unicode, unicode)
Supported signatures:
  PySide.QtGui.QLabel.setText(unicode)

如何将包含所选文件名的self.fname转换为unicode?

1 个答案:

答案 0 :(得分:3)

PySide的文档在这方面并不出色。但回答这类问题的最简单方法是构建一个小测试工具。类似的东西:

from PySide import QtCore,QtGui

def do_file():
    fname = QtGui.QFileDialog.getOpenFileName()
    print fname

app = QtGui.QApplication([])

button = QtGui.QPushButton("Test File")
button.clicked.connect(do_file)
button.show()

app.exec_()

稍微运行一下会告诉你静态getOpenFileName方法返回一个元组,首先包含文件名,第二个选择过滤器。例如,默认情况下,在我的系统上,这将返回('C:/Users/Myname/Documents/filename', 'All Files (*.*)')

因此,您需要在调用setText之前提取元组的第一个元素。