我想将选定文件的位置存储为Python中的字符串。我正在尝试使用QFileDialog来实现这一点,我有:
self.filedialog = QtGui.QFileDialog(self)
self.filedialog.show()
filepath = str(self.filedialog.getOpenFileName())
这将打开两个QFileDialog窗口。有趣的是,其中一个窗口没有继承'风格'我的GUI,设置我的setStyle,但确实返回文件路径字符串。另一个QFileDialog确实继承了样式,但是无法返回文件路径字符串。我发现QFileDialog documentation很有帮助,但是无法创建一个QFileDialog框,它们都生成文件路径字符串,并继承了我的GUI样式。我犯了什么错误?
答案 0 :(得分:2)
你实际创建了2个窗口。
函数QFileDialog.getOpenFileName
是静态的,这意味着它创建自己的QFileDialog
对象,显示窗口,等待用户选择文件并返回选择的文件名。
你应该只需要那条线:
filepath = str(QFileDialog.getOpenFileName())
如果您在应用程序级别设置样式(使用QApplication.setStyle
),如果您使用非本机对话框,它可能会应用于窗口:
filepath = str(QFileDialog.getOpenFileName(options=QFileDialog.DontUseNativeDialog)))
答案 1 :(得分:1)
getOpenFileName
是"creates a modal file dialog"的便利功能。这就是你得到第二个对话框的原因。
使用filedialog.exec()
显示对话框,使用fileDialog.selectedFiles()
获取文件名。
答案 2 :(得分:-1)
exec是python中的保留字,必须使用exec _()。
dialog = QFileDialog(self)
dialog.exec_()
for file in dialog.selectedFiles():
print file