我想按一个按钮而不是打开文件浏览器并在标签中记下所选文件。我有按下按钮时调用的这个功能:
@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? p>
答案 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
之前提取元组的第一个元素。