Seite 1 von 1
Dateiauswahl Gnome statt KDE
Verfasst: Montag 11. August 2025, 19:58
von pExplorer
Hallo,
damit öffne ich einen File-Dialog zur Auswahl eines Verzeichnisses:
Code: Alles auswählen
from PyQt5 import QtGui, QtCore, QtWidgets
self.app_path = QtCore.QDir.homePath()
dir_source = QtWidgets.QFileDialog.getExistingDirectory(
self, "Quell-Ordner", self.app_path)
Auf einem ubuntu 22 hatte ich von früher her PyQt so installiert:
Nun habe ich für die App ein python-env eingerichet und PyQt so installiert:
Starte ich meine App mit dem via apt installierten PyQt, öffnet QFileDialog den Gmome-File-Dialog.
Starte ich meine App mit dem via env installierten PyQt, öffnet QFileDialog den KDE-File-Dialog.
Letzteren finde ich umständlich und unübersichtlich.
Wie kann ich erreichen, dass die App via env den Gnome-File-Dialog verwendet?
Re: Dateiauswahl Gnome statt KDE
Verfasst: Montag 11. August 2025, 21:09
von DeaD_EyE
Schau dir mal QtWidgets.QFileDialog.Options() und QtWidgets.QFileDialog.DontUseNativeDialog an.
Möglicher Ansatz:
Code: Alles auswählen
import sys
from pathlib import Path
from PyQt5 import QtWidgets
class MainWindow(QtWidgets.QWidget):
def __init__(self, native=False):
super().__init__()
self.button = QtWidgets.QPushButton("Verzeichnis auswählen")
self.button.clicked.connect(self.choose_directory)
self.close_button = QtWidgets.QPushButton("Beenden")
self.close_button.clicked.connect(QtWidgets.QApplication.quit)
layout = QtWidgets.QVBoxLayout(self)
layout.addWidget(self.button)
layout.addWidget(self.close_button)
# name mangling
self.__native = native
def choose_directory(self):
# alternativ QtCore.QDir.homePath()
# ein Path objekt kann man nicht direkt verwenden
# falls doch -> crash
downloads = str(Path.home().joinpath("Downloads"))
options = QtWidgets.QFileDialog.Options()
if self.__native:
options |= QtWidgets.QFileDialog.DontUseNativeDialog
else:
options &= ~QtWidgets.QFileDialog.DontUseNativeDialog
folder = QtWidgets.QFileDialog.getExistingDirectory(
self, "Wähle ein Verzeichnis", downloads, options=options
)
if folder:
QtWidgets.QMessageBox.information(self, "Auswahl", f"Gewählt: {folder}")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = MainWindow(native=True)
window.show()
sys.exit(app.exec_())
Ich bin jetzt zu faul eine Gnome-Session zu starten, um das zu testen. Da ich den KDE Plasma Desktop nutze, wird in beiden Fällen ein nativer Dialog angezeigt. Ich konnte jedenfalls keinen Unterschied erkennen.
PS: ChatGPT hat den Code zuerst falsch ausgegeben. Jedenfalls ist mir aufgefallen, dass die Doku von PyQt5 nicht aufzufinden ist. Damit meine ich so etwas wie eine Referenz, wie man es bei PySide6 präsentiert bekommt.
Re: Dateiauswahl Gnome statt KDE
Verfasst: Dienstag 12. August 2025, 07:51
von pExplorer
Danke für den Tipp, DeaD_EyE!
Diese Option bewirkt allerdings das Gegenteil von dem, was ich erreichen möchte.
Statt der Gnome-Pfad-Wahl wird nun auch die KDE/QT-Pfad-Wahl benutzt, wenn ich das Programm nicht im env starte.
Re: Dateiauswahl Gnome statt KDE
Verfasst: Dienstag 12. August 2025, 08:57
von snafu
Da hat er sich auch vertan. Wenn du bei dem ``if`` Test ein ``not`` einsetzt, sollte es funktionieren.
Re: Dateiauswahl Gnome statt KDE
Verfasst: Dienstag 12. August 2025, 11:26
von pExplorer
snafu hat geschrieben: Dienstag 12. August 2025, 08:57
Da hat er sich auch vertan. Wenn du bei dem ``if`` Test ein ``not`` einsetzt, sollte es funktionieren.
Hm, mein Programm ist über 10 Jahre alt, ich *steck'* da nicht mehr so drin...
Die Definition der Class ist so
Code: Alles auswählen
class DaisyCopy(QtWidgets.QMainWindow, daisy_creator_mag_ui.Ui_DaisyMain):
"""
mainClass
The second parent must be 'Ui_<obj. name of main widget class>'.
"""
process_validator_error_signal = QtCore.pyqtSignal(str)
process_validator_output_signal = QtCore.pyqtSignal(str)
def __init__(self, parent=None):
"""Settings"""
super(DaisyCopy, self).__init__(parent)
Wenn ich da ergänze
erhalte ich beim Aufruf des Dialogs:
'DaisyCopy' object has no attribute '_DaisyCopy__native'
Re: Dateiauswahl Gnome statt KDE
Verfasst: Dienstag 12. August 2025, 14:07
von __blackjack__
@pExplorer: Sicherlich hast Du noch mehr ergänzt als nur dieses Argument. Du wirst irgendwo Code ergänzt haben, der auf ``self.__native`` zugreift, aber das nirgends gesetzt haben, oder zumindest nicht bevor darauf zugegriffen wird.
Re: Dateiauswahl Gnome statt KDE
Verfasst: Dienstag 12. August 2025, 14:42
von DeaD_EyE
__blackjack__ hat geschrieben: Dienstag 12. August 2025, 14:07 ``self.__native``
Den Code hab ich gepostet. Doppelte Unterstriche, um Namenskollisionen zu vermeiden.
Aber ja, wenn man das Attribut nicht zuweist, kann man es auch nicht lesen.
Re: Dateiauswahl Gnome statt KDE
Verfasst: Dienstag 12. August 2025, 16:04
von pExplorer
DeaD_EyE hat geschrieben: Dienstag 12. August 2025, 14:42
__blackjack__ hat geschrieben: Dienstag 12. August 2025, 14:07 ``self.__native``
Den Code hab ich gepostet. Doppelte Unterstriche, um Namenskollisionen zu vermeiden.
Aber ja, wenn man das Attribut nicht zuweist, kann man es auch nicht lesen.
Ah, ja das hatte ich vergessen, danke.
Das bringt zwar noch einen anderen Pfad-Datei-Auswahldialog, aber es ist nicht der native Gnome-Dialog, oder ein veralteter.
Neben der unschöneren Darstellung finde ich weder mit dem, noch mit dem QT-Dialog z.B. einen Weg, um temporäre Samba-Freigaben zu wählen... Arrgh