2013-02-26 3 views
1

Qt4Reactor를 올바르게 사용하는 방법은 무엇입니까?QT4Reactor/Scrapy/PyQt4

웹 사이트를 구문 분석하고 결과를 ui에 표시하기 위해 Scrapy를 실행하는 PyQt4 응용 프로그램이 있습니다.

사용자가 버튼을 클릭하면 스크래퍼가 다른 프로세스에서 시작됩니다. ui 블록과 스크레이퍼가 작동 중입니다. 스크레이퍼가 완료되면 데이터가 ui에 표시됩니다. Scrapy가 실행될 때 내가 원하는 것은 차단되지 않은 UI입니다. Scrapy 트위스트의 상단에 구축하기 때문에

, 나는 새로운 프로세스를 사용 대신 스레드의 UI에서 시작해야합니다.

제 질문은 가능한 한 간단하게 비 차단 UI를 달성하는 방법입니다.

나는이 같은 Qt4Reactor를 사용하려고 :

이이 오류가 발생
if __name__ == "__main__": 

    app = QtGui.QApplication(sys.argv) 

    import qt4reactor 
    qt4reactor.install() 

    MainWindow = DiscogsRenamer() 
    MainWindow.show() 

    sys.exit(app.exec_()) 
    reactor.runReturn() 

: 사전에 Integrate Scrapy/Twisted event loop in PyQt4 Main loop

감사 : 나는이 주제에 대한 또 다른 질문을 게시

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 

.

답변

0

twisted.internet.reactor을 가져 오기 전에 전에 qt4reactor 을 가져오고 설치해야합니다.

import qt4reactor 
qt4reactor.install() 
from twisted.internet import reactor