合并两个事件循环(Cherrypy和Wxpython)

2024-03-29 14:00:45 发布

您现在位置:Python中文网/ 问答频道 /正文

好的,我有一个用cherrypy编写的应用程序,我想为它构建一个wxpythongui。问题是这两个模块都使用一个闭环来处理事件,这(我假设)意味着当一个模块运行时,另一个模块将被锁定。在

我征求了一些建议,建议我合并两个事件循环,而不是使用股票入口点(cherrypy的quickloop()和wx的MainLoop())

问题是我不知道怎么做。如有任何建议,将不胜感激。在


Tags: 模块应用程序事件建议股票cherrypywxmainloop
2条回答

就cherrypy来说,你有消息来源。查看代码quickloop()的功能,然后尝试将此代码与WX的MainLoop()合并。在

两个循环可能如下所示:

while (true) {
    if (pendingEvents()) processEvents ();
    else waitForEvents ();
}

您必须找到一种方法将两个等待的调用合并为一个(因此,如果任一事件源有挂起的事件,代码将继续)。对于WX,请查看Dispatch()Pending()和{}。在

或者您可以查看wxIdleEvent(请参见the docs)并处理其中的所有cherrypy事件。在

另一种解决方案可能是在不同的线程中运行这两个循环。在这种情况下,不能从cherrypy代码调用WX方法,反之亦然。要解决这个问题,您必须找到一种方法将消息发送到另一个线程,其中包含要调用哪个方法的所有信息。这确保WX方法在WX线程中执行,cherrypy方法在cherrypy线程中执行。在

你在这里已经问了同样的问题:cherrypy and wxpython,我给了你最好的回答,你会在那里找到最好的答案,很明显,你同意了。你为什么又问?在

相关问题 更多 >