如何正确使用 Qt4Reactor?
我有一个运行 Scrapy 的 PyQt4 应用程序来解析网站并在 ui 中显示结果。
当用户单击一个按钮时,刮板将在另一个进程中启动。ui 块和刮板正在运行。刮板完成后,数据显示在ui中。我想要的是 Scrapy 运行时的非阻塞 ui。
由于 Scrapy 是建立在 twisted 之上的,因此我必须使用新进程而不是线程来从 ui 启动它。
我的问题是如何尽可能简单地实现非阻塞用户界面?
我尝试像这样使用 Qt4Reactor:
if __name__ == "__main__":
app = QtGui.QApplication(sys.argv)
import qt4reactor
qt4reactor.install()
MainWindow = DiscogsRenamer()
MainWindow.show()
sys.exit(app.exec_())
reactor.runReturn()
这会导致错误:
Traceback (most recent call last):
File "/home/f/work/py/discogs_renamer/main.py", line 224, in <module>
qt4reactor.install()
File "/usr/local/lib/python2.7/dist-packages/qt4reactor.py", line 338, in posixinstall
installReactor(p)
File "/usr/local/lib/python2.7/dist-packages/twisted/internet/main.py", line 32, in installReactor
raise error.ReactorAlreadyInstalledError("reactor already installed")
twisted.internet.error.ReactorAlreadyInstalledError: reactor already installed
我向这个主题发布了另一个问题: Integrate Scrapy/Twisted event loop in PyQt4 Main loop
提前致谢。