WXPython ListCtrl Onclick -Event
-
27-10-2019 - |
Frage
Ich habe also ein WXPython -ListCtrl, das Datenzeilen enthält. Wie kann ich ein Ereignis machen, das eine Funktion mit dem Zeileninhalt aufruft, wenn eine der Zeilen aufgerufen wird?
Lösung
Du kannst den ... benutzen Bind
Funktion, um eine Methode an ein Ereignis zu binden. Zum Beispiel,
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()
Diese App druckt das Element in der aktivierten ListCtrl (durch Drücken der Eingabetaste oder Doppelklicken). Wenn Sie nur ein einzelnes Klickereignis fangen möchten, können Sie verwenden wx.EVT_LIST_ITEM_SELECTED
.
Der wichtige Punkt ist, dass die Bind
Funktion gibt die Methode an, die aufgerufen werden soll, wenn ein bestimmtes Ereignis stattfindet. Siehe den Abschnitt im WXPython Erste Schritte Handhabung des Events. Siehe auch die Dokumente auf ListCtrl Für die Ereignisse, die Widget verwendet.