Search code examples
pythonpyqtqfiledialog

how to make getOpenFileName remember last opening path?


According to getOpenFileName instructions:

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

How can I make the dialog remember the path the last time when I close it?

and what does the tr mean in the tr("Open File")?

Thanks


Solution

  • If you omit the dir argument (or pass in an empty string), the dialog should remember the last directory:

    filename = QtGui.QFileDialog.getOpenFileName(
                   parent, 'Open File', '', 'Images (*.png *.xpm *.jpg)')
    

    The tr function is used for translating user-visible strings. You can omit it if you won't ever be providing translations for your application.

    EDIT:

    It seems that the start directory may not be automatically remembered on all platforms/desktops, depending on whether you use the native dialog or not. If Qt's built-in dialog is used, the start directory should always be automatically remebered on all platforms (even between invokations of the application). To try the non-native dialog, do:

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

    Alternatively, you can use the QFileDialog constructor, which will always create a non-native dialog:

    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]