如何在pyside中为QtGui.QFileDialog.getOpenFileName定义一个QDir?

Posted

技术标签:

【中文标题】如何在pyside中为QtGui.QFileDialog.getOpenFileName定义一个QDir?【英文标题】:How to define a QDir in pyside for QtGui.QFileDialog.getOpenFileName? 【发布时间】:2014-05-15 18:48:25 【问题描述】:

我想使用

打开一个文件对话框
fileName = QtGui.QFileDialog.getOpenFileName(self, "Open File", QtCore.QDir("/home/user"))

但是这个表达式给出了以下错误:

TypeError: 'PySide.QtGui.QFileDialog.getOpenFileName' called with wrong argument types:
  PySide.QtGui.QFileDialog.getOpenFileName(ImageViewer, str, PySide.QtCore.QDir)
Supported signatures:
  PySide.QtGui.QFileDialog.getOpenFileName(PySide.QtGui.QWidget = None, unicode = QString(), unicode = QString(), unicode = QString(), PySide.QtCore.QString = QString(), PySide.QtGui.QFileDialog.Options = 0)

这里的文档没用,因为文档只存在于 Qt for C++ 的显着位置(也许 pyside 有一些隐藏的文档......?)。而且由于 C++ 和 python 之间的数据类型有点不同,我无法解决我的问题。

有什么建议吗?

【问题讨论】:

看看pyside documentation 绝对路径示例:QDir("/home/user/Documents") QDir("C:/Documents and Settings") 但这对我的问题不起作用! QDir 不在支持的签名列表中。所以我假设你应该把它作为一个字符串传递。 是的,这行得通。但从“标准”Qt 文档中并不明显......,谢谢 @Alex 'standard' PySide 文档在这里 pyside.github.io/docs/pyside - 文档链接可以在 pyside 主页上找到 qt-project.org/wiki/PySide 并且它没有隐藏! 【参考方案1】:

http://pyside.github.io/docs/pyside/ PySide 文档。

查看静态函数部分。 http://pyside.github.io/docs/pyside/PySide/QtGui/QFileDialog.html

parent = None # QtGui.QMainWindow()
filters = "All File (*);;CSV (*.csv *.CSV)" # Only allow these file ext to be opened
title = "Save As"
open_at = "directory/"
results = QtGui.QFileDialog.getOpenFileName(parent, title, open_at, filters)

QtCore.QDir 是一个对象。它需要 unicode / str。所以只需使用“/home/user”。

"/home/user"
or
QtCore.QDir("/home/user").absolutePath() # This ensures that the given location exists.

【讨论】:

请更新文档链接,应该是pyside.github.io/docs/pyside - 谢谢

以上是关于如何在pyside中为QtGui.QFileDialog.getOpenFileName定义一个QDir?的主要内容,如果未能解决你的问题,请参考以下文章

是否可以在 PyQt/PySide2 中为 QLineEdit 的文本制作“破碎”边框

PySide2 QMainWindow()捆绑在PyInstaller中后无法呈现[重复]

Maya (PySide2) - 重新打开窗口而不是新窗口

如何在 Travis 上安装 PySide?

如何在 Windows 上安装 PySide 的步骤

如何在 PySide 中模块化创建属性