Hola compañero, en este caso debes usar EVT_ACTIVATE, te pongo un ejemplo, espero que te sirva, un saludo! :
import wx class MiVentana(wx.Frame): def __init__(self, *args, **kwargs): super().__init__(parent=None, title='Mi Ventana', *args, **kwargs) panel = wx.Panel(self, wx.ID_ANY) etiqueta = wx.StaticText(panel, wx.ID_ANY, 'Etiqueta') btnSalir = wx.Button(panel, wx.ID_EXIT) btnSalir.Bind(wx.EVT_BUTTON, self.onSalir) sizer_panel = wx.BoxSizer(wx.VERTICAL) sizer_panel.Add(etiqueta, 0, wx.ALL, 5) sizer_panel.Add(btnSalir, 0, wx.ALL, 5) panel.SetSizer(sizer_panel) sizer = wx.BoxSizer(wx.VERTICAL) sizer.Add(panel, 0, wx.EXPAND) self.SetSizerAndFit(sizer) self.Show(True) self.Bind(wx.EVT_ACTIVATE, self.onPierdeFoco) print(wx.Window.FindFocus()) def onSalir(self, event): print("evento onSalir") self.Close(True) # self.Destroy() def onPierdeFoco(self, event): print('Ha perdido el foco') event.Skip() self.Close() class Aplicacion(wx.App): def __init__(self, *args, **keywords): super().__init__(redirect=False) def OnInit(self): self.SetAppName("Prueba Focus") ventana = MiVentana() self.SetTopWindow(ventana) # frame = wx.Frame(parent=None, title = 'bare') # frame.Show() return True def InitLocale(self): # Para prevenir el fallo de locales con las ultimas versiones de wxpython https://discuss.wxpython.org/t/what-is-wxpython-doing-to-the-locale-to-makes-pandas-crash/34606/10 self.ResetLocale() import locale lang, enc = locale.getdefaultlocale() self._initial_locale = wx.Locale(lang, lang[:2], lang) locale.setlocale(locale.LC_ALL, lang) if __name__ == '__main__': app = Aplicacion() app.MainLoop() El sáb., 12 sept. 2020 a las 10:32, Héctor J. Benítez Corredera (< facturasxebo...@gmail.com>) escribió: > Buenas me gustaría solicitar ayuda con el problema de enfocar y saber > cuando se pierde el foco en una ventana en Windows. > > > > Bien estoy trabajando con wxpython y mi problema es que no consigo saber > cuando se pierde el foco en la ventana de la aplicación ya que debería > desencadenar el cierre de ella si el usuario deja de tenerla en primer > plano. > > > > Bien al contener mi panel varios widgets no consigo que wx.EVT_KILL_FOCUS > me sirva. > > > > E estado leyendo por stackoverflow.com y una de mis soluciones podría ser > wx.Window.FindFocus(), pero no encuentro ningún ejemplo practico el cual me > ayude a entenderlo. > > > > Alguien sabe de algún repo, pagina que contenga algún ejemplo sobre el > tema o tiene la amabilidad de plasmarme algo sencillito. > > > > Muchas gracias de antemano. > > > > Cordiales saludos > > > > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es