是否按顺序发布了wxPython事件?

时间:2009-10-27 07:53:38

标签: event-handling wxpython

如果使用来自同一线程的wxPostEvent / wxCallAfter发布多个事件,例如按钮点击是否应按相同顺序处理?

在下面的示例中,wx.Callafter用于发布最终将调用回调函数的事件,它们将以相同的顺序被调用,在这些中它们被传递给wx.CallAfter

def onbutton(self, event):
    wx.CallAfter(func1)
    # some more code
    wx.CallAfter(func2)

2 个答案:

答案 0 :(得分:1)

CallAfter将事件发布到事件队列,这些事件应按顺序处理。仍然,它们是在空闲事件上处理的,而不是基于函数完成,因此func2可以在func1完成之前处理,具体取决于空闲事件的时间(例如wx.Yield等)。有关此问题的讨论here,它似乎有点棘手。

答案 1 :(得分:0)

我相信应该得到保证。我有一些代码从线程中的串口抓取数据并触发事件以供wx处理。即使以115kbps的速度接收数据 - 它无疑会在处理之前触发几个事件 - 当wx调用我的处理程序打印/注销数据时,数据会按顺序显示。