gpt4 book ai didi

python-2.7 - 在python qt中带有线程的Qwebview

转载 作者:行者123 更新时间:2023-12-04 02:07:56 25 4
gpt4 key购买 nike

我想使用多线程运行多个QWebview来抓取数据。但是不知道如何使用qwebview实现线程。在这里,我写了一些代码:

from PyQt4.QtCore import *
from PyQt4.QtGui import *
from PyQt4.QtWebKit import *
from PyQt4.QtNetwork import *
from PyQt4 import QtCore, QtGui
from lxml import etree,html
from PyQt4.QtCore import Qt
import sys



class Form(QWidget):
def __init__(self, parent=None):
super(Form, self).__init__(parent)
self.setMouseTracking(True)
vbox = QVBoxLayout()
self.browser = QWebView()
self.browser.connect(self.browser,SIGNAL('loadFinished(bool)'),self.loadFinished)
#vbox.addWidget(self.browser)
self.browser.load(QtCore.QUrl("http://www.google.com"))
self.browser_tabs = QTabWidget()
self.browser_tabs.setTabPosition(QTabWidget.South)
b1_tab = QWidget()
d = QHBoxLayout()
d.addWidget(self.browser)
b1_tab.setLayout(d)
self.browser_tabs.addTab(b1_tab,"browser0")
vbox.addWidget(self.browser_tabs)

self.setLayout(vbox)
def loadFinished(self,ok):
print ok


def main():

app = QApplication(sys.argv)
ex = Form()
ex.show()
ex.setGeometry(150, 100, 1024, 770)

#ex.showMaximized()
sys.exit(app.exec_())

if __name__ == '__main__':
main()


您可以使用选项卡小部件打开多个浏览器。

最佳答案

为您的Form类定义一个新函数。并使用thread.start_new_thread(function_name,arguments())。

import thread

class Form(QWidget):
...
def addNewTab(self, newUrl, tabIndex):
new_browser = QWebView()
new_browser.connect(self.browser,SIGNAL('loadFinished(bool)'),self.loadFinished)
new_browser.load(QtCore.QUrl(newUrl))
new_tab = QWidget()
d = QHBoxLayout()
d.addWidget(new_browser)
new_tab.setLayout(d)
self.browser_tabs.addTab(new_tab, "browser" + str(tabIndex))

# Do your scraping here

def main():
app = QApplication(sys.argv)
ex = Form()
ex.show()
ex.setGeometry(150, 100, 1024, 770)

thread.start_newThread(ex.addNewTab, (someUrl1, 1))
thread.start_newThread(ex.addNewTab, (someUrl2, 2))
thread.start_newThread(ex.addNewTab, (someUrl3, 3))

sys.exit(app.exec())

关于python-2.7 - 在python qt中带有线程的Qwebview,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38451722/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com