Domanda

Quindi, ho un ListCtrl wxPython che contiene righe di dati. Come posso fare un evento che chiama una funzione, con il contenuto delle righe, quando una delle righe se cliccato?

È stato utile?

Soluzione

È possibile utilizzare la funzione di Bind per associare un metodo per un evento. Ad esempio,

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()

Questa applicazione stamperà la voce nel ListCtrl che viene attivata (premendo entrare o doppio clic). Se si desidera solo per la cattura di un singolo evento click, è possibile utilizzare wx.EVT_LIST_ITEM_SELECTED.

Il punto importante è che la funzione Bind specifica il metodo da chiamare quando un particolare evento si verifica. Vedere la sezione nella wxPython Guida introduttiva sulla gestione degli eventi . Si veda anche la documentazione su ListCtrl per gli eventi che widget usa.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top