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?

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top