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

Responder a