Python QWebEngineView:显示加载进度
我将QWebEngineView小部件与PyQt5和Python3.6一起使用。 我想在加载页面时显示进度。出于演示目的,我只是使用print语句(稍后我想让一个进度条小部件出现,显示进度,完成后消失) 我连接到事件loadStarted、loadProgress和loadFinished 代码如下所示(self.browser是QWebEngineView小部件): 现在,当然,我想得到loadProgress事件的实际进度值,而不是数字42。我怎么得到这个Python QWebEngineView:显示加载进度,python,pyqt,pyqt5,qwebengineview,Python,Pyqt,Pyqt5,Qwebengineview,我将QWebEngineView小部件与PyQt5和Python3.6一起使用。 我想在加载页面时显示进度。出于演示目的,我只是使用print语句(稍后我想让一个进度条小部件出现,显示进度,完成后消失) 我连接到事件loadStarted、loadProgress和loadFinished 代码如下所示(self.browser是QWebEngineView小部件): 现在,当然,我想得到loadProgress事件的实际进度值,而不是数字42。我怎么得到这个 对不起,如果这个问题是愚蠢的。我是
对不起,如果这个问题是愚蠢的。我是一个NeBee,我不能从C++文档中把它翻译成Python。(很遗憾,我找不到适合Qt的Python docu。)不需要传递lambda,您可以使用以下命令直接连接它: 例如:
import sys
import time
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
class Widget(QtWidgets.QWidget):
def __init__(self):
super(Widget, self).__init__()
lay = QtWidgets.QVBoxLayout(self)
self.browser = QtWebEngineWidgets.QWebEngineView()
lay.addWidget(self.browser)
self.browser.setUrl(QtCore.QUrl("https://www.google.com"))
self.browser.loadStarted.connect(self.loadStartedHandler)
self.browser.loadProgress.connect(self.loadProgressHandler)
self.browser.loadFinished.connect(self.loadFinishedHandler)
@QtCore.pyqtSlot()
def loadStartedHandler(self):
print(time.time(), ": load started")
@QtCore.pyqtSlot(int)
def loadProgressHandler(self, prog):
print(time.time(), ":load progress", prog)
@QtCore.pyqtSlot()
def loadFinishedHandler(self):
print(time.time(), ": load finished")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
view = Widget()
view.show()
sys.exit(app.exec_())
@“loadProgressHandler()”函数可以接受任何附加参数吗?老实说-我已经尝试过了,但没有成功…所以我正在尝试找到正确的方法(如果可能的话)。@eyllanesc我想提供3个外部参数,它们是辅助函数的输入,只有当prog==100时才会执行!!我不知道如何解释它-我的MRE不够小(短)到我可以在这里发布。@eyllanesc我刚刚重构了代码,你的类成员建议100%有效!!我不知道为什么我之前没有看到这个逻辑?!我想课程太多了。。。无论如何,谢谢你。
def loadStartedHandler(self):
print(time.time(), ": load started")
def loadProgressHandler(self, prog):
print(time.time(), ":load progress", prog)
def loadFinishedHandler(self):
print(time.time(), ": load finished")
....
self.browser.loadStarted.connect(self.loadStartedHandler)
self.browser.loadProgress.connect(self.loadProgressHandler)
self.browser.loadFinished.connect(self.loadFinishedHandler)
import sys
import time
from PyQt5 import QtCore, QtWidgets, QtWebEngineWidgets
class Widget(QtWidgets.QWidget):
def __init__(self):
super(Widget, self).__init__()
lay = QtWidgets.QVBoxLayout(self)
self.browser = QtWebEngineWidgets.QWebEngineView()
lay.addWidget(self.browser)
self.browser.setUrl(QtCore.QUrl("https://www.google.com"))
self.browser.loadStarted.connect(self.loadStartedHandler)
self.browser.loadProgress.connect(self.loadProgressHandler)
self.browser.loadFinished.connect(self.loadFinishedHandler)
@QtCore.pyqtSlot()
def loadStartedHandler(self):
print(time.time(), ": load started")
@QtCore.pyqtSlot(int)
def loadProgressHandler(self, prog):
print(time.time(), ":load progress", prog)
@QtCore.pyqtSlot()
def loadFinishedHandler(self):
print(time.time(), ": load finished")
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
view = Widget()
view.show()
sys.exit(app.exec_())