所以,我有一个包含数据行的wxPython ListCtrl。如果单击其中一行,如何使用行内容调用函数调用事件?
答案 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上有关窗口小部件使用的事件的文档。