1

我想将选定文件的位置存储为 Python 中的字符串。我正在尝试使用 QFileDialog 来完成此操作,我有:

self.filedialog = QtGui.QFileDialog(self)
self.filedialog.show()
filepath = str(self.filedialog.getOpenFileName())

这将打开两个 QFileDialog 窗口。有趣的是,其中一个窗口没有继承我的 GUI 的“样式”,设置了我的 setStyle,但确实返回了文件路径字符串。另一个 QFileDialog 确实继承了样式,但不能返回文件路径字符串。我发现QFileDialog 文档很有帮助,但无法创建一个 QFileDialog 框,它既能生成文件路径字符串,又能继承我的 GUI 的样式。我犯了什么错误?

4

3 回答 3

2

您实际上创建了 2 个窗口。

该函数QFileDialog.getOpenFileName是静态的,这意味着它创建自己的QFileDialog对象,显示窗口,等待用户选择文件并返回选择的文件名。

您应该只需要该行:

filepath = str(QFileDialog.getOpenFileName())

如果您在应用程序级别设置样式(使用QApplication.setStyle),如果您使用非本机对话框,它可能会应用于窗口:

filepath = str(QFileDialog.getOpenFileName(options=QFileDialog.DontUseNativeDialog)))
于 2012-07-13T22:47:33.797 回答
1

getOpenFileName“创建模态文件对话框”的便捷功能。这就是你得到第二个对话框的原因。

用于filedialog.exec()显示对话框并fileDialog.selectedFiles()获取文件名。

于 2012-07-13T22:43:46.120 回答
-1

exec是python中的保留字,必须使用exec_()。

dialog = QFileDialog(self)
dialog.exec_()
for file in dialog.selectedFiles():
    print file
于 2013-07-19T01:53:59.457 回答