PySide 和 Python - 如何浏览文件夹并写入文件名?
PySide and Python - How to browse a folder and write the file name?
我想按下一个按钮,然后打开文件浏览器并在标签中记下选定的文件。我有这个函数,当按下按钮时我会调用它:
@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?
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
方法 returns 一个由文件名第一个和所选择的过滤器组成的元组。例如,默认情况下,在我的系统上这个 returns ('C:/Users/Myname/Documents/filename', 'All Files (*.*)')
.
因此您需要在调用 setText
之前提取元组的第一个元素。
我想按下一个按钮,然后打开文件浏览器并在标签中记下选定的文件。我有这个函数,当按下按钮时我会调用它:
@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?
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
方法 returns 一个由文件名第一个和所选择的过滤器组成的元组。例如,默认情况下,在我的系统上这个 returns ('C:/Users/Myname/Documents/filename', 'All Files (*.*)')
.
因此您需要在调用 setText
之前提取元组的第一个元素。