wxPython ListCtrl OnClick Event
-
27-10-2019 - |
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?
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.