Question

Alors, j'ai une ListCtrl wxPython qui contient des lignes de données. Comment puis-je faire un événement qui appelle une fonction, avec le contenu de la ligne, lorsque l'une des lignes si vous cliquez sur?

Était-ce utile?

La solution

Vous pouvez utiliser la fonction Bind pour lier une méthode à un événement. Par exemple,

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

Cette application permet d'imprimer l'élément dans la ListCtrl qui est activé (en appuyant sur entrer ou double-clic). Si vous voulez juste pour attraper un seul événement de clic, vous pouvez utiliser wx.EVT_LIST_ITEM_SELECTED.

Le point important est que la fonction Bind spécifie la méthode à appeler lorsqu'un événement particulier se produit. Voir la section du wxPython Mise en route Guide sur la base de l'événement . Voir aussi la documentation sur ListCtrl pour les événements widget utilisations.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top