[pyqt] Always on Top

Python und das Qt-Toolkit, erstellen von GUIs mittels des Qt-Designers.
Antworten
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Hi Community,
mein erster Post hier! Juchu!

Bin gerade dabei eine GUI zu programmiern, die immer im Vordergrund sein soll. Sprich, wenn man den focus des Programmes wechselt, soll dieses immer im Vordergrund bleiben.

Ich arbeite mit python 2.5.4 und der entsprechenden Qt version. Außerdem läuft das ganze auf einem Windowsrechner.

Kann mir irgendjemand helfen?
lunar

Qt erlaubt es, bestimmten Fenstern Flags zu verpassen. Unter den verfügbaren Flags gibt es "WindowStaysOnTopHint". Diesen Flag setzt du entweder über den Konstruktor oder über die windowFlags-Eigenschaft von QWidget.

Allerdings handelt es sich dabei unter X11 nur um eine Empfehlung an den Window-Manager. Diesem steht es frei, die Empfehlung zu ignorieren, zumal manche Window-Manager (insbesondere Tiling-WMs) so etwas wie "Vordergrund" gar nicht kennen. Zwar kann das umgangen werden, in dem man dem WM die Kontrolle über das Fenster entzieht, das aber ist in den seltensten Fällen empfehlenswert.
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Ich hab noch nicht so ganz verstanden wie ich diese Flags setzen kann.

So?

Code: Alles auswählen

QtGui.QWidget.windowFlags("WindowStaysOnTopHint")
oder

Code: Alles auswählen

self.setWindowFlags(WindowStaysOnTopHint)
wo self mein QWidget ist?

Edit: Beides scheint nicht zu klappen.
Beim 2. Beispiel sagt er, dass WindowStaysOnTopHint nicht finden kann.
Wie kann ich den die Konstanten ansprechen?


oder wie sieht der Code genau aus?
lunar

Code: Alles auswählen

self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Bei mir kommt dann die Fehlermeldung:

Qt is not defined.

Ich importier nämlich die Module so:

Code: Alles auswählen

    from PyQt4 import QtCore
    from PyQt4 import QtGui
Wie kann greif ich denn dann darauf zu?
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Code: Alles auswählen

QtCore.Qt.WindowStaysOnTopHint
derdon
User
Beiträge: 1316
Registriert: Freitag 24. Oktober 2008, 14:32

anogayales hat geschrieben:Ich importier nämlich die Module so:

Code: Alles auswählen

    from PyQt4 import QtCore
    from PyQt4 import QtGui
Warum nicht so?

Code: Alles auswählen

from PyQt4 import QtCore, QtGui
anogayales
User
Beiträge: 456
Registriert: Mittwoch 15. April 2009, 14:11

Danke, klappt nun alles!

Auch das mit der Vereinfachung!
Monty Python
User
Beiträge: 29
Registriert: Mittwoch 29. Oktober 2008, 21:29
Wohnort: Chemnitz
Kontaktdaten:

geht das auch mit Tkinter?
mind like a sieve
lunar

Diese Frage gehört in einen eigenen Thread im richtigen Unterforum.
Monty Python
User
Beiträge: 29
Registriert: Mittwoch 29. Oktober 2008, 21:29
Wohnort: Chemnitz
Kontaktdaten:

- .-
passt aber zum thema
mind like a sieve
lunar

Das Thema dieses Forums und damit auch dieser Diskussion ist vor allem PyQt. Da passt Tkinter eher schlecht zum Thema ;)

Aber es ist deine Sache, wenn Du glaubst, in diesem Forum wären viele Tkinter-Experten unterwegs … wer PyQt benutzt, hat in der Regel keine Verwendung mehr für Tkinter :)
Monty Python
User
Beiträge: 29
Registriert: Mittwoch 29. Oktober 2008, 21:29
Wohnort: Chemnitz
Kontaktdaten:

ääh, ich hantiere normalerweise auch mit tkinter und hab hierhergefunden -.-
mind like a sieve
Benutzeravatar
snafu
User
Beiträge: 6738
Registriert: Donnerstag 21. Februar 2008, 17:31
Wohnort: Gelsenkirchen

Es geht ja nicht mal darum, ob man von den entsprechenden "Experten" gelesen wird, sondern dass die verschiedenen Unterforen hier ihren Sinn haben und man sich auch daran halten sollte. Die Zeit, die du hier mit deinem Gestänker verbringst, hättest du besser nutzen können für einen eigenen Thread im TKinter-Forum, sofern du denn ernsthaft an einer Antwort interessiert bist.
Monty Python
User
Beiträge: 29
Registriert: Mittwoch 29. Oktober 2008, 21:29
Wohnort: Chemnitz
Kontaktdaten:

inzwischen nicht mehr
mind like a sieve
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Monty Python hat geschrieben:ääh, ich hantiere normalerweise auch mit tkinter und hab hierhergefunden -.-
Na das ist ja super, schmeißen wir alle Foren in das "Allgemeine Fragen"-Forum zusammen.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Monty Python
User
Beiträge: 29
Registriert: Mittwoch 29. Oktober 2008, 21:29
Wohnort: Chemnitz
Kontaktdaten:

ok
mind like a sieve
Antworten