如何在控制所有内容的PyQt应用中使用reactor?

1 投票
1 回答
1399 浏览
提问于 2025-04-16 00:44

我有一个Django应用程序,是通过Twisted来提供服务的,同时还提供其他服务(主要是三个套接字)。

我需要让它在Windows上运行,所以我决定写一个PyQt4的应用程序,功能类似于Apache服务监控器,专门为Windows设计。

我没能把Twisted的反应器(reactor)连接到PyQt的应用程序反应器上,所以如果你有任何建议,我会很感激。

现在我的架构是这样的:

  • QMainWindow,在__init__()里有log.addObserver(callBack)函数和一个小部件。
  • Twisted初始化器类,继承自QtCore.QThread,在一个不同的线程中工作。
  • Django应用,在Twisted上运行。

我需要理解如何运行反应器,因为从QtCore.QThread调用reactor.start()根本不行,给我返回了:

exceptions.ValueError: signal only works in main thread

另外,我也想听听你们对这个应用程序设计的看法,这样的设计对你们来说有意义吗?

1 个回答

1

我不太确定我完全理解你的设计,但我可以告诉你的是,在一个应用程序中只需要使用一个反应器。反应器是应用程序的主要(事件)循环。而且,我觉得在你的情况下,这个反应器应该是QTReactor

撰写回答