[Python-es] Ayuda con foco en ventana wxpython

Héctor J. Benítez Corredera facturasxebolax en gmail.com
Dom Sep 13 01:14:18 EDT 2020


Hola, muchísimas gracias.

La verdad no conocía wx.EVT_ACTIVATE y me sirvió correctamente para lo 
que quiero hacer.

Muchísimas gracias por su ejemplo.

Cordiales saludos

El 12/09/2020 a las 16:02, PeRy escribió:
> 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 
> (<facturasxebolax en gmail.com <mailto:facturasxebolax en 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 <http://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 en python.org <mailto:Python-es en python.org>
>     https://mail.python.org/mailman/listinfo/python-es
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20200913/6ea778fe/attachment.html>


Más información sobre la lista de distribución Python-es