PyQt - 如何使getOpenFileName记住最后的开放路径?

Lia*_*odi 8 python pyqt qfiledialog

根据getOpenFileName说明:

QString fileName = QFileDialog.getOpenFileName(this, tr("Open File"), 
                                          "/home",
                                          tr("Images (*.png *.xpm *.jpg)"));
Run Code Online (Sandbox Code Playgroud)

当我关闭它时,如何让对话框记住最后一次的路径?

什么是tr意味着tr("Open File")什么?

谢谢

ekh*_*oro 17

如果省略dir参数(或传入空字符串),则对话框应记住最后一个目录:

filename = QtGui.QFileDialog.getOpenFileName(
               parent, 'Open File', '', 'Images (*.png *.xpm *.jpg)')
Run Code Online (Sandbox Code Playgroud)

TR功能用于翻译用户可见的字符串.如果您不为应用程序提供翻译,则可以省略它.

编辑:

似乎可能无法在所有平台/桌面上自动记住启动目录,具体取决于您是否使用本机对话框.如果使用Qt的内置对话框,则应始终在所有平台上自动重新编写起始目录(甚至在应用程序的调用之间).要尝试非本机对话框,请执行以下操作:

filename = QtGui.QFileDialog.getOpenFileName(
               parent, 'Open File', '', 'Images (*.png *.xpm *.jpg)',
               None, QtGui.QFileDialog.DontUseNativeDialog)
Run Code Online (Sandbox Code Playgroud)

或者,您可以使用QFileDialog构造函数,它始终会创建一个非本机对话框:

dialog = QtGui.QFileDialog(parent)
dialog.setWindowTitle('Open File')
dialog.setNameFilter('Images (*.png *.xpm *.jpg)')
dialog.setFileMode(QtGui.QFileDialog.ExistingFile)
if dialog.exec_() == QtGui.QDialog.Accepted:
    filename = dialog.selectedFiles()[0]
Run Code Online (Sandbox Code Playgroud)