How to make a PyQT4 window jump to the front?

redice picture redice · Aug 25, 2012 · Viewed 13.4k times · Source

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.

Answer

Avaris picture Avaris · Aug 25, 2012

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.