wxPython ListCtrl OnClick事件

时间:2011-07-26 13:01:17

标签: events wxpython call listctrl event-binding

所以,我有一个包含数据行的wxPython ListCtrl。如果单击其中一行,如何使用行内容调用函数调用事件?

1 个答案:

答案 0 :(得分:9)

您可以使用Bind函数将方法绑定到事件。例如,

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

此应用程序将打印激活的ListCtrl中的项目(通过按Enter或双击)。如果您只想捕获单击事件,可以使用wx.EVT_LIST_ITEM_SELECTED

重要的一点是Bind函数指定了特定事件发生时要调用的方法。请参阅event handling上wxPython入门指南中的部分。另请参阅ListCtrl上有关窗口小部件使用的事件的文档。