我试图使用PyQt在Python中创建一个应用程序,该应用程序可以获取URL列表中生成的内容,并在多个线程的帮助下处理获取的源代码。我需要一次跑大约10 QWebViews。尽管这听起来很荒谬,但当涉及到数百个URL时,使用线程QWebViews获得的结果比正常速度快3倍以上。
这是我一直有问题的测试代码.
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
class Worker(QThread):
def __init__(self, url, frame):
QThread.__init__(self)
self.url = url
self.frame = frame
def run(self):
self.frame.load(QUrl(self.url))
print len(self.frame.page().mainFrame().toHtml())
app = QApplication(sys.argv)
webFrame = QWebView()
workerList = []
for x in range(1):
worker = Worker('http://www.google.com', webFrame)
workerList.append(worker)
for worker in workerList:
worker.start()
sys.exit(app.exec_())
上面,我尝试在主QWebView QApplication中初始化该QApplication,但只得到:
QObject: Cannot create children for a parent that is in a different thread.
因此,我尝试在QThread中初始化QThread;但之后,QWebView保持不变,空白,没有输出任何错误或任何内容。这可能是由于缓存错误造成的。
我有一种感觉,我错过了某件事,或者跳过了一个非常重要的一步。由于PyQt中的线程化的PyQt并不是一个真正有文档记录的主题,所以我非常希望就如何成功地实现这个问题提供任何帮助。
发布于 2011-08-22 05:46:31
您的问题和代码有多个问题:
https://stackoverflow.com/questions/7143088
复制相似问题