7

我正在尝试使用 wxpython ui 制作一个cherrypy 应用程序。问题是两个库都使用闭环事件处理程序。有没有办法让它工作?如果我有 wx ui start cherrypy 会锁定 ui 吗?

4

4 回答 4

5

查看我在CherryPy 上的回答会干扰 Windows 上的 Twisted 关闭

简而言之,CherryPy 默认处理主循环,但它绝对不需要。停止使用 quickstart 并在没有 engine.block 的情况下调用 engine.start,CP 将在自己的线程中运行,并将主线程留给你的其他框架来控制。

于 2010-01-07T20:16:58.327 回答
1

如果您使用线程,您应该能够在一个线程中启动 CherryPy 服务器并在另一个线程中运行 wxPython。wxPython wiki 上的这篇文章 ( http://wiki.wxpython.org/LongRunningTasks ) 有一些关于线程的信息,以及 CherryPy 服务器源代码 ( http://www.cherrypy.org/browser/trunk/cherrypy/wsgiserver/ __init__.py)有一些关于服务器如何工作的文档,以及可能如何让它与线程交互。

于 2010-01-07T17:58:00.713 回答
1

解耦它们的一种方法是将它们作为两个独立的进程启动,并让它们通过某种 IPC 机制进行通信。您可能必须编写一个小型适配器才能让它们使用通用协议。

由于您正在使用 CherryPy,您还可以通过 HTTP 公开一个控制接口,wx GUI 可以使用该控制接口来驱动您的服务器。

于 2010-01-07T18:04:48.463 回答
1

我鼓励您查看 Calibre(电子书管理器)。它是用 PyQT 编写的,但使用 CherryPy 允许人们从 LAN 外部查看他们的库。

于 2010-01-07T18:49:58.970 回答