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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top