Seite 1 von 1

[pyqt] Always on Top

Verfasst: Mittwoch 15. April 2009, 14:14
von anogayales
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?

Verfasst: Mittwoch 15. April 2009, 14:35
von 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.

Verfasst: Mittwoch 15. April 2009, 15:41
von anogayales
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?

Verfasst: Mittwoch 15. April 2009, 16:09
von lunar

Code: Alles auswählen

self.setWindowFlags(self.windowFlags() | Qt.WindowStaysOnTopHint)

Verfasst: Mittwoch 15. April 2009, 17:59
von anogayales
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?

Verfasst: Mittwoch 15. April 2009, 18:20
von snafu

Code: Alles auswählen

QtCore.Qt.WindowStaysOnTopHint

Verfasst: Mittwoch 15. April 2009, 18:25
von derdon
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

Verfasst: Mittwoch 15. April 2009, 18:28
von anogayales
Danke, klappt nun alles!

Auch das mit der Vereinfachung!

Verfasst: Dienstag 25. August 2009, 14:43
von Monty Python
geht das auch mit Tkinter?

Verfasst: Dienstag 25. August 2009, 14:52
von lunar
Diese Frage gehört in einen eigenen Thread im richtigen Unterforum.

Verfasst: Dienstag 25. August 2009, 15:40
von Monty Python
- .-
passt aber zum thema

Verfasst: Dienstag 25. August 2009, 17:47
von 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 :)

Verfasst: Donnerstag 27. August 2009, 15:50
von Monty Python
ääh, ich hantiere normalerweise auch mit tkinter und hab hierhergefunden -.-

Verfasst: Donnerstag 27. August 2009, 16:00
von snafu
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.

Verfasst: Donnerstag 27. August 2009, 16:08
von Monty Python
inzwischen nicht mehr

Verfasst: Donnerstag 27. August 2009, 19:18
von Leonidas
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.

Verfasst: Freitag 28. August 2009, 17:01
von Monty Python
ok