2016-07-27 19 views
1

ich meinen eigenen benutzerdefinierte Datei-Dialog zu schaffen mit dem folgenden Code:QFileDialog Ordner und Dateien anzeigen, aber nur Ordner auswählen?

file_dialog = QtGui.QFileDialog() 
file_dialog.setFileMode(QtGui.QFileDialog.Directory) 
file_dialog.setViewMode(QtGui.QFileDialog.Detail) 
file_dialog.setOption(QtGui.QFileDialog.DontUseNativeDialog, True) 

Das Verhalten, das ich interessiert bin ist, dass der Benutzer in der Lage sein, beiden Dateien und Ordner anzeigen, aber wählen Sie Ordner nur. (Dateien nicht auswählbar machen). Ist das möglich?

Hinweis: Mit der DirectoryOnly Option ist nicht gut für mich, da es nicht zulässt, dass Dateien anzuzeigen, nur Ordner.

bearbeiten (extra Code, i, die anstelle von nur einem mehrere Ordner auswählen zu können, die für vergaß hinzuzufügen):

file_view = file_dialog.findChild(QtGui.QListView, 'listView') 
if file_view: 
    file_view.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) 
f_tree_view = file_dialog.findChild(QtGui.QTreeView) 
if f_tree_view: 
    f_tree_view.setSelectionMode(QtGui.QAbstractItemView.MultiSelection) 
+0

Der Code, den Sie gepostet haben, macht genau das, was Sie sagen, dass Sie wollen (dh der Benutzer kann Dateien und Verzeichnisse anzeigen, aber nur Verzeichnisse auswählen). Vielleicht müssen Sie genauer erklären, was Sie erreichen möchten. – ekhumoro

+0

Nicht wirklich .. der Code oben erlaubt Ihnen, auch Dateien zu wählen. – YaronGh

+0

Für mich wird die Schaltfläche "Auswählen" nur aktiviert, wenn ich Verzeichnisse auswähle. Es ist möglich * Dateien * auszuwählen, aber nicht zu wählen (weil die Schaltfläche deaktiviert ist). – ekhumoro

Antwort

2

Dateien ausgewählt zu verhindern, können Sie einen Proxy-Modell installieren, die manipuliert die Flags für Elemente in der Dateiansicht:

+0

Okay, vielen Dank! Ich bin nicht sicher, ob ich eine neue Frage für das oder nicht öffnen sollte (lassen Sie mich wissen) - aber gibt es eine schnelle Änderung, die ich zu meinem Code oben machen könnte, um in der Lage zu sein, Ordner und Akten zu wählen? – YaronGh

+1

@YaronGh. 'file_dialog.setProxyModel (None)'. – ekhumoro

+0

Wenn ich das tue, gibt es die ausgewählte Datei + alle anderen Dateien in diesem Ordner – YaronGh

Verwandte Themen