El código es útil, así que esto es algo que escribí para una aplicación, excepto para el evento closeEvent en lugar del evento minimize.
Notas:
"CloseEvent (evento)" es un evento reemplazado Qt, por lo que debe ser puesto en la clase que implementa la ventana que desea ocultar.
"okayToClose()" es una función que podría considerar implementar (o un indicador booleano que desee almacenar) ya que a veces realmente desea salir de la aplicación en lugar de minimizarla a la bandeja del sistema.
También hay un ejemplo de cómo mostrar() su ventana nuevamente.
def __init__(self):
traySignal = "activated(QSystemTrayIcon::ActivationReason)"
QtCore.QObject.connect(self.trayIcon, QtCore.SIGNAL(traySignal), self.__icon_activated)
def closeEvent(self, event):
if self.okayToClose():
#user asked for exit
self.trayIcon.hide()
event.accept()
else:
#"minimize"
self.hide()
self.trayIcon.show() #thanks @mojo
event.ignore()
def __icon_activated(self, reason):
if reason == QtGui.QSystemTrayIcon.DoubleClick:
self.show()
# "minimizar" self.hide() self.trayIcon.show() event.ignore() –
añadí @ sugerencia de mojo de flexibilidad en cómo se maneja el icono de la bandeja del sistema. El código original provenía de una aplicación donde el ícono de la bandeja siempre estaba visible, el archivo self.trayIcon.hide() era para que el ícono no se quedara en la bandeja del sistema después de la salida (el comportamiento típico de Windows, lamentablemente). Tenga en cuenta que ahora el usuario debe implementar el método showEvent (evento) y llamar a self.trayIcon.hide() para completar este ejemplo. Debería haber publicado un ejemplo de minimizar/restaurar solo en primer lugar :) –