Fenster auf dem Bildschirm positionieren so dass es gut aussieht – Wie geht das?

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Wichtig, meine Anwendung soll unter Windows, Ubuntu und MacOS laufen, es geht also auch um Plattformunabhängigkeit.

Das Problem:
Wenn ich ein QmainWindow mit setGeometry positioniere gebe ich x,y Position und Höhe und Breite an ungeachtet dessen, welche Bildschirmauflösung auf dem Zielrechner eingestellt.

Frage:
Wie positionieren Python-Profis Fenster so dass sie immer optimal platziert werden?
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Die Frage wurde dir bereits beantwortet - indem du das Qt-eigene Layouting System benutzt.
Benutzeravatar
__blackjack__
User
Beiträge: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythonMarlem: Und die Position vom Fenster macht man gar nicht selber, das ist Aufgabe der Fensterverwaltung des Systems auf dem das läuft.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

__blackjack__ hat geschrieben: Dienstag 2. Juni 2020, 10:19 @PythonMarlem: Und die Position vom Fenster macht man gar nicht selber, das ist Aufgabe der Fensterverwaltung des Systems auf dem das läuft.
Das bedeutet, setGeometry bei Fenster macht man gar nicht?
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Das macht man genau so wenig wie die Größe oder die absolute Positionierung von irgend einem anderen Element der GUI anzugeben.
Das macht man übrigens bei keinem Toolkit, das ich kenne.
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Grmpf! Bei den beiden Udemy-Kursen die ich gemacht habe, wurde alles mit setGeometry positioniert!
__deets__
User
Beiträge: 14543
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na dann beschwer dich.
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Was muß ich jetzt lernen um es richtig zu machen? Nach welchem Thema muß ich suchen in Google oder Youtube?
Benutzeravatar
__blackjack__
User
Beiträge: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythonMarlem: Layouts. Und die Qt-Dokumentation hat da auch eine Übersicht zu („Layout Management“).
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

okay, habe es umgeschrieben in ein GridLayout. Funktioniert auch unter Ubuntu!
Danke für den Tipp!
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Bild

Hier ein Screenshot von Ubuntu.
das Fenster ist sehr weit links.
Ist das halt so bei Python oder gibt es Möglichkeiten darauf Einfluß zu nehmen?
Benutzeravatar
sparrow
User
Beiträge: 4195
Registriert: Freitag 17. April 2009, 10:28

Dass man da Einfluss drauf nehmen kann, weißt du doch schon.
Ob es sinnvoll ist, das zu tun, steht auf einem anderen Blatt. Wo ein Fenster erscheint, regelt normalerweise nicht das Programm sondern der Fenstermanager. Wo erscheinen denn andere Programme, wenn du sie startest? Und was passiert, wenn du mehrere Programme startest? Und warum möchtest du, dass dein Programm sich abnormal verhält?
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Und warum möchtest du, dass dein Programm sich abnormal verhält?
Weil es für den Benutzer einfacher ist, wenn ein Programmfenster zentriert in der Mitte dargestellt wird.
Ob es sinnvoll ist, das zu tun, steht auf einem anderen Blatt. Wo ein Fenster erscheint, regelt normalerweise nicht das Programm sondern der Fenstermanager.
In Ordnung. Dann lasse ich es. Dann werde ich mein Programm nochmal testen und dann ist es fertig!
Benutzeravatar
__blackjack__
User
Beiträge: 13114
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@PythonMarlem: Das ist nur so lange einfacher bis er ein zweites Fenster öffnet, das dann nicht mehr platziert werden kann ohne das erste mindestens zu überlappen. Oder ein drittes, oder viertes, oder…

Und wenn der Benutzer das gerne immer mittig haben will, dann stellt er das halt in seiner Fensterverwaltung so ein, so dass es für alle Programme gilt. Weiss nicht wie das bei GNOME/Mutter aussieht, aber bei KDE/KWin geht das bei mir in den Einstellungen unter „Window Management“ → „Window Behaviour“ → „Advanced“ und da dann „Placement“ von „Smart“ (Überlappungen minimieren) auf „Centered“ (immer mittig) umstellen.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
PythonMarlem
User
Beiträge: 90
Registriert: Dienstag 19. Mai 2020, 19:17
Wohnort: Dußlingen
Kontaktdaten:

Prima, Danke!
Antworten