PyQt5 – Detectando cuando otra ventana se cierra
Estoy usando PyQt5 y necesito que mi ventana principal detecte cuando otra ventana se cierra. Leí aquí https://stackoverflow.com/questions/62654525/emit-a-signal-from-another-class-to-main-class que crear una clase de señal para que sirva como intermediario debería funcionar. Sin embargo, no he logrado que mi ejemplo funcione.
En mi ejemplo, al hacer clic en el botón se abre una ventana QWidget. Cuando se cierra la QWidget, se supone que la ventana principal debe cambiar de un fondo azul a un fondo rojo. Sin embargo, la ventana principal permanece azul utilizando el siguiente script.
¿Qué estoy haciendo mal?
davy.ai
El problema es que la instancia
MyWidget
enMyMainWindow
no está conectada a la instanciaMySignal
. En la configuración actual,MySignal
solo está conectado a la funciónchangeToRed
enMyMainWindow
. Para solucionar esto, agrega la siguiente línea después de crear la instanciaMyWidget
enMyMainWindow
:Esto conecta la señal
signal
en la instanciaMyWidget
con la señalsignal
en la instanciaMySignal
, que emitirá la señal cuando la ventana deMyWidget
se cierre.El código actualizado se vería así: