Search code examples
pythonpyqt4

How to make a PyQT4 window jump to the front?


I want to make a PyQT4 window(QtGui.QMainWindow) jump to the front when the application received a specified message from another machine. Usually the window is minimized.

I tried the raise_() and show() method but it doesn't work.


Solution

  • This works:

    # this will remove minimized status 
    # and restore window with keeping maximized/normal state
    window.setWindowState(window.windowState() & ~QtCore.Qt.WindowMinimized | QtCore.Qt.WindowActive)
    
    # this will activate the window
    window.activateWindow()
    

    Both are required for me on Win7.

    setWindowState restores the minimized window and gives focus. But if the window just lost focus and not minimized, it won't give focus.

    activateWindow gives focus but doesn't restore the minimized state.

    Using both has the desired effect.