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

wxPython-在列表框中选择时如何生成事件?,python,user-interface,wxpython,wxwidgets,Python,User Interface,Wxpython,Wxwidgets,我有一个带有几个选项的列表框。我想在调用SetSelection时生成wx.EVT_列表框。我理解SetSelection不会生成事件来防止初始化期间出现问题。所以我有一个函数 def selectItem(self, index): self.myList.SetSelection(index) event = wx.PyCommandEvent(wx.EVT_LISTBOX.typeId, self.myList.GetId()) wx.PostEvent(self,

我有一个带有几个选项的列表框。我想在调用SetSelection时生成wx.EVT_列表框。我理解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()时会出现错误。我怎样才能解决这个问题?感谢您的帮助。有更好的方法吗


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

您确实回答了自己的问题,您根本不应该生成事件,只需调用一些
DoSelect(self,string)
函数可以同时从
selectItem()
OnSelect()
执行。

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

谢谢。这是显而易见的。我真不敢相信我错过了它它不会产生任何事件,这就是重点。您不应该在代码中生成任何事件,用户定义的事件除外。事件是你得到的,而不是你创造的。