wxPython ListCtrl Surclic événement
-
27-10-2019 - |
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?
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.