python - QtGui.QFileDialog Unicode 名称?

标签 python qt pyside qfiledialog

这让我抓狂,我到处搜索都找不到遇到这个问题的人。在寻找答案的过程中我无法很好地描述它,所以我来找你。

这是我的代码:

def browse(self):

    directory = QtGui.QFileDialog.getOpenFileName (self, "Find Files")

    if directory:
        self.newfilepath.setText(str(directory))
    else:
        self.newfilepath.setText('No file selected')

我试图将结果放入窗口中的一个字段中,然后将其推送到 sqlite 数据库以供以后检索。不幸的是,下面的代码给了我一个我似乎无法修复的结果。

    name1 = (self.newdescript.toPlainText())

结果是:

(u'F:/GeoDatabase/GeoDatabase2.py', u'All Files (*.*)')

我想要的只是:

F:/GeoDatabase/GeoDatabase2.py

或者也许:

'F:/GeoDatabase/GeoDatabase2.py'

我如何让它只给我路径名而不是所有其他废话。我所做的一切似乎都没有改变,而且我不知道还能去哪里。

最佳答案

这是由 PyQt4 和 PySide 之间的一点差异引起的。

使用 PyQt4,所有静态 QFileDialog 方法(例如 getOpenFileName)返回单个字符串或(对于 getOpenFileNames)一个列表字符串。

但是使用 PySide,getExistingDirectory 返回单个字符串,但所有其他方法返回一个由字符串/字符串列表以及所选过滤器组成的元组。

要解决此问题,在 PySide 中,您的代码需要如下所示:

def browse(self):
    path, filter = QtGui.QFileDialog.getOpenFileName(self, "Find Files")
    if path:
        self.newfilepath.setText(path)
    else:
        self.newfilepath.setText('No file selected')

PS:

严格来说,PySide 这里更正确。 C++ API 修改其参数之一以提供选定的过滤器,因此返回元组是表示它的最 Pythonic 方式。

PyQt4 未能遵守修改后的参数,但因此可能更直观。

PPS:

对于 PyQt5,与 PySide 不再有任何区别,因为它现在还返回路径和过滤器的元组。

关于python - QtGui.QFileDialog Unicode 名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19996128/

相关文章:

qt - 如何使用 QTextCursor 选择最近添加的文本

python - PySide/PyQT5 : How to emit signals from a QGraphicsItem?

python - 如何检查列表的元素是否为数字?

python - 如何从图像像素阵列创建平均 rgb 向量?

Python/Kivy - UrlRequest 结果

python - 如何在 python 中终止 qthread

python - 从 QTreeView 中的索引列表中设置选择

python - 尽管有种子,Numpy 仍产生不同的随机数

android - QT + OpenSSL + 安卓

qt - CMake QT LIBRARIES 二进制等效项