如何在Ptd中为QtGui.QFileDialog.getOpenFileName定义QDir?

时间:2014-05-15 18:48:25

标签: python c++ qt pyside

我想使用

打开文件对话框
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之间的数据类型有点不同,我无法解决我的问题。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

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.