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 (<
[email protected]>) 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
> [email protected]
> https://mail.python.org/mailman/listinfo/python-es
>
_______________________________________________
Python-es mailing list
[email protected]
https://mail.python.org/mailman/listinfo/python-es