wxPython - 如何在列表框中选择时生成事件?

wxPython - How to generate an event when selecting in a ListBox?

我有一个带有几个选项的列表框。我想在调用 SetSelection 时生成 wx.EVT_LISTBOX。我了解 SetSelection 不会生成事件以防止初始化期间出现问题。所以我有一个函数

def selectItem(self, index):
    self.myList.SetSelection(index)
    event = wx.PyCommandEvent(wx.EVT_LISTBOX.typeId, self.myList.GetId())
    wx.PostEvent(self, event)

我还有一个简单的函数来处理选择项目

def OnSelect(self, event):
    print event.GetEventObject().GetStringSelection()

这将 运行,但是当使用 SelectItem() 时,事件对象是 None,因此当我尝试使用 GetStringSelection() 时出现错误。我怎样才能解决这个问题?任何帮助表示赞赏。有更好的方法吗?

实际上,重新考虑这一点,我可能不需要生成事件来完成我正在做的事情,但我仍然很好奇为什么这没有按预期工作

您确实回答了您自己的问题,您一开始根本不应该生成事件,而只是从 selectItem()OnSelect() 调用一些 DoSelect(self, string) 函数.

这是因为您在创建活动时没有调用 event.SetEventObject(self.myList)