1

Qt4Reactorを正しい方法で使用するにはどうすればよいですか?

Scrapyを実行しているPyQt4アプリケーションを使用して、Webサイトを解析し、UIに結果を表示しています。

ユーザーがボタンをクリックすると、スクレーパーは別のプロセスで開始されます。UIがブロックされ、スクレーパーが実行されています。スクレーパーが終了すると、データがUIに表示されます。私が欲しいのは、Scrapyが実行されているときにブロックされていないUIです。

Scrapyはtwistedの上に構築されているため、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()

これにより、エラーが発生します。

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

このトピックに別の質問を投稿しました: PyQt4メインループにScrapy/Twistedイベントループを統合する

前もって感謝します。

4

1 に答える 1