【发布时间】:2011-10-13 09:50:12
【问题描述】:
所以,我有一个包含数据行的 wxPython ListCtrl。当单击其中一行时,如何使用行内容创建一个调用函数的事件?
【问题讨论】:
-
@Stephen-Terry 谢谢,但这并不能完全回答我的问题;我如何首先调用该函数?这些回复是关于如何在调用函数后从事件中获取信息。
标签: events wxpython call listctrl event-binding
所以,我有一个包含数据行的 wxPython ListCtrl。当单击其中一行时,如何使用行内容创建一个调用函数的事件?
【问题讨论】:
标签: events wxpython call listctrl event-binding
您可以使用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 上的文档以了解小部件使用的事件。
【讨论】: