近期项目里使用PyQt编写界面,需要在界面上显示HTML文件,使用PyQt5.QtWebEngineWidgets.QWebEngineView控件实现。
自定义MyQWebEngineView类继承自QWebEngineView,当测试线程完成时,通过由该类实例化的对象的Update方法进行更新。
class MyQWebEngineView(QWebEngineView):
updateSignal=pyqtSignal()
def __init__(self):
super(MyQWebEngineView, self).__init__()
self.updateSignal.connect(self.loadHTML)
self.loadHTML()#实例化时就读取一次html文件
def loadHTML(self):
path=''#html文件路径
self.load(QUrl(path))
def EmitSignal(self):
self.updateSignal.emit()
def Update(self):
updateThread = threading.Thread(target=self.EmitSignal)
updateThread.daemon = True
updateThread.start()
使用自定义QThread也可实现相同的效果,但是无论QThread还是threading.Thread都不能直接创建线程调用QWebEngineView的load方法,需要通过信号实现,不然软件会崩溃。
如有错误,望斧正!