2009-04-25 4 views
4

ich muss mein fenster top level machen, wenn ich brauche. Code of Schaffung Fenster:PyQt - make window top level

class Application(QtGui.QMainWindow): 
    def __init__(self, parent=None): 
     QtGui.QMainWindow.__init__(self, None, Qt.Tool | Qt.FramelessWindowHint) 
     self.setFocusPolicy(Qt.StrongFocus) 
     self.setAttribute(Qt.WA_QuitOnClose, True) 

Und wenn ich brauche ich tun:

self.setWindowFlags(Qt.WindowStaysOnTopHint) 

Aber nach diesem Teil des Codes läuft mein Fenster versteckt ... Ich weiß nicht, wo es ist. Aber mein Programm schließt nicht! Hilfe! Wie kann ich mein Fenster im Bedarfsfall am höchsten machen?

Antwort

7

Aufruf von .show() oder .raise() auf Ihrem Fenster sollte es zu konzentrieren.

Und from the doc for setWindowFlags():

Hinweis: Diese Funktion ruft setParent() wenn die Flags für ein Fenster zu ändern, das Widget verursacht versteckt werden. Sie müssen show() rufen Sie das Widget wieder sichtbar zu machen ..

Ich wollte nur für jemand anderen hinzufügen, die diese Frage stellt fest, dass die Qt doc für C++ ist eine sehr gute Ressource auch bei Verwendung von PyQt, Stellen Sie nur sicher, dass Sie auf die Version des Qt C++ - Dokuments verweisen, das für Ihre Version von PyQt gilt (das letzte PyQt wird mit 4.4 kompiliert, wenn Sie das verwenden).

+0

'' window.raise _() '' funktioniert nicht für mich auf Linux und PyQt 4.8.3, Ist es ein Fehler? – saeedgnu