gpt4 book ai didi

python - QtGui.QFileDialog Unicode 名称?

转载 作者:太空宇宙 更新时间:2023-11-03 18:43:47 26 4
gpt4 key购买 nike

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

这是我的代码:

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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com