PyQt4 Minimize to Tray

Gavin Vickery picture Gavin Vickery · Apr 17, 2009 · Viewed 16.2k times · Source

Is there a way to minimize to tray in PyQt4? I've already worked with the QSystemTrayIcon class, but now I would like to minimize or "hide" my app window, and show only the tray icon.

Has anybody done this? Any direction would be appreciated.

Using Python 2.5.4 and PyQt4 on Window XP Pro

Answer

Kevin picture Kevin · Apr 17, 2009

It's pretty straightforward once you remember that there's no way to actually minimize to the system tray.

Instead, you fake it by doing this:

  1. Catch the minimize event on your window
  2. In the minimize event handler, create and show a QSystemTrayIcon
  3. Also in the minimize event handler, call hide() or setVisible(false) on your window
  4. Catch a click/double-click/menu item on your system tray icon
  5. In your system tray icon event handler, call show() or setVisible(true) on your window, and optionally hide your tray icon.