5 Stimmen

Erlaubt dem Benutzer die Auswahl einer Datei oder eines Ordners im QFileDialog

In PyQt können Sie etwas wie das Folgende tun, um dem Benutzer die Auswahl einer Datei zu ermöglichen

filename = QtGui.QFileDialog.getOpenFileName(self, "Choose file..")

Ich möchte jedoch eine QFileDialog zu öffnen, in dem der Benutzer entweder eine Datei oder ein Verzeichnis auswählen kann. Ich bin sicher, ich habe diese Funktion in PyQt-Anwendungen vor gesehen, aber ich kann nicht scheinen, um eine Möglichkeit, es zu tun zu finden.

0voto

gruszczy Punkte 39020

Wenn ich mich recht erinnere, müssen Sie Ihren eigenen QFileDialog schreiben und die richtigen Modus . Ich glaube, das sollte sein QFileDialog.ExistingFile & QFileDialog.Directory .

Sie können versuchen, Ihre eigene statische Methode zu schreiben, die auf getExisitingDirectory (aus dem C++-Repository) basiert:

QString QFileDialog::getExistingDirectory(QWidget *parent,
                                          const QString &caption,
                                          const QString &dir,
                                          Options options)
{
    if (qt_filedialog_existing_directory_hook && !(options & DontUseNativeDialog))
        return qt_filedialog_existing_directory_hook(parent, caption, dir, options);
    QFileDialogArgs args;
    args.parent = parent;
    args.caption = caption;
    args.directory = QFileDialogPrivate::workingDirectory(dir);
    args.mode = (options & ShowDirsOnly ? DirectoryOnly : Directory);
    args.options = options;

#if defined(Q_WS_WIN)
    if (qt_use_native_dialogs && !(args.options & DontUseNativeDialog) && (options & ShowDirsOnly)
#if defined(Q_WS_WINCE)
        && qt_priv_ptr_valid
#endif
        ) {
        return qt_win_get_existing_directory(args);
    }
#endif

    // create a qt dialog
    QFileDialog dialog(args);
    if (dialog.exec() == QDialog::Accepted) {
        return dialog.selectedFiles().value(0);
    }
    return QString();
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X