TransWikia.com

Ayuda con la manera de salir de un dialogo de wxpython

Stack Overflow en español Asked by Héctor on August 26, 2021

Me gustaría pedir ayuda con algo que por más que busco y le doy vueltas no consigo hacer. Posiblemente sea fácil la solución pero estoy ofuscado y no doy con la vuelta.

Bien en wxpython tengo una ventana de dialogo la cual deseo que se cierre tanto con un botón dedicado a ello como pulsando escape.

Para ello tengo esto:

    self.closeBTN = wx.Button(Panel, wx.ID_ANY, _("&Close"))
    self.Bind(wx.EVT_BUTTON, self.onClose, self.closeBTN)

    self.Bind(wx.EVT_CHAR_HOOK, self.onEsc)

def onEsc(self, event):
    if event.GetKeyCode() == wx.WXK_ESCAPE:
        ConfigFileSave()
        self.Destroy()
    else:
        event.Skip()

def onClose(self, event):
    ConfigFileSave()
    self.Destroy()

Bien esto funciona perfectamente, pero ahora mis preguntas.

1º Seria posible tener ligado las dos acciones a un solo def, algo a si:

Def onPrueba(self, event):
    if event.GetKeyCode() == wx.WXK_ESCAPE:
        ConfigFileSave()
        self.Destroy()
    elif >capturar el evento del botón al ser pulsado< == >saber cuando fue pulsado el botón<:
        ConfigFileSave()
        self.Destroy()
    else:
        event.Skip()

El planteamiento anterior lo conseguiría si no me equivoco definiendo los eventos a si:

    self.Bind(wx.EVT_BUTTON, self.onPrueba, self.closeBTN)
    self. closeBTN.Bind(wx.EVT_CHAR_HOOK, self.onPrueba)

2º Hay alguna otra manera de hacer lo que pretendo?

Espero haberme explicado y muchas gracias de antemano.

Cordiales saludos

One Answer

Bueno pues en la lista de Python en Español me contestaron.

https://mail.python.org/mailman/listinfo/python-es

Dejo aquí una posible solución y sigo abierto a saber si hubiese otras formas de hacerlo.

    self.Bind(wx.EVT_BUTTON, self.onClose, self.closeBTN)
    self.Bind(wx.EVT_CHAR_HOOK, self.onClose)

def onClose(self, event):
    if event.GetEventType() == 10012:
        ConfigFileSave()
        self.Destroy()
    else:
        keyCode = event.GetKeyCode()
        if keyCode == wx.WXK_ESCAPE:
            ConfigFileSave()
            self.Destroy()
        event.Skip()

Answered by Héctor on August 26, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP