QWebPage loadFinished сигнал не вызывается при использовании потока? - PullRequest
2 голосов
/ 27 декабря 2011

Я пытаюсь выполнить сетевой запрос с помощью webkit во вторичном потоке, а также выполняю всю обработку, как удаление данных в одном и том же потоке. Тем не менее, я озадачен, почему сигнал loadFinished с QWebPage не подключается. Пожалуйста, просветите меня, пока я учусь.

import sys
from PyQt4.QtCore import *
from PyQt4.QtWebKit import *
from PyQt4.QtGui import *

class HeadlessBrowser(QObject):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.page = QWebPage()

    def browse_page(self, url):
        qDebug('method browse_page called.') #This is called.
        url = QUrl(url)
        self.page.mainFrame().load(url)
        self.page.loadFinished.connect(self.process_page) #Not executed. Why?

    def process_page(self):
        qDebug('method process_page called.') #This is not called. Why?
        #Convert to html
        print(self.page.mainFrame().toHtml())

class WorkerThread(QThread):
    def __init__(self, parent=None):
        super().__init__(parent)

    def run(self):

        br = HeadlessBrowser()
        br.browse_page('http://www.google.com')

    def __del__(self):
        self.wait()

def main():
    app = QApplication(sys.argv)
    thread = WorkerThread()
    thread.start()
    sys.exit(app.exec_())

if __name__ == '__main__':
    main()
...