wxpython listctrl onclick evento
-
27-10-2019 - |
Pregunta
Por lo tanto, tengo un wxpython listCtrl que contiene filas de datos. ¿Cómo puedo hacer un evento que llame a una función, con el contenido de la fila, cuando una de las filas si se hace clic?
Solución
Puedes usar el Bind
función para unir un método a un evento. Por ejemplo,
import wx
class MainWidget(wx.Frame):
def __init__(self, parent, title):
super(MainWidget, self).__init__(parent, title=title)
self.list = wx.ListCtrl(parent=self)
for i,j in enumerate('abcdef'):
self.list.InsertStringItem(i,j)
self.Bind(wx.EVT_LIST_ITEM_ACTIVATED, self.OnClick, self.list)
self.Layout()
def OnClick(self, event):
print event.GetText()
if __name__ == '__main__':
app = wx.App(redirect=False)
frame = MainWidget(None, "ListCtrl Test")
frame.Show(True)
app.MainLoop()
Esta aplicación imprimirá el elemento en ListCtrl que se activa (presionando ENTER o haciendo doble clic). Si solo desea ver un solo evento de clic, puede usar wx.EVT_LIST_ITEM_SELECTED
.
El punto importante es que el Bind
La función especifica el método que se llamará cuando ocurre un evento en particular. Consulte la sección en la guía de inicio de WXPython en manejo de eventos. Ver también los documentos en ListCtrl para los eventos que usa Widget.