gpt4 book ai didi

python - QWebEngineView:显示加载进度

转载 作者:太空宇宙 更新时间:2023-11-04 00:15:39 26 4
gpt4 key购买 nike

我在 PyQt5 和 Python 3.6 中使用 QWebEngineView 小部件。我想在加载页面时显示进度。出于演示目的,我只是使用打印语句来执行此操作(稍后我想让进度条小部件出现、显示进度并在完成后消失)。

我连接到事件 loadStarted、loadProgress、loadFinished。

代码如下所示(self.browser 是 QWebEngineView 小部件):

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(lambda: self.loadStartedHandler())
self.browser.loadProgress.connect(lambda: self.loadProgressHandler(42))
self.browser.loadFinished.connect(lambda: self.loadFinishedHandler())

当然,现在我想获取 loadProgress 事件的实际进度值,而不是数字 42。我如何获得这个?

抱歉,如果这个问题很愚蠢。我是一个新手,我无法将它从 C++ 文档翻译成 Python。 (不幸的是,我找不到适合 Qt 的 Python 文档。)

最佳答案

不需要传递 lambda,您可以使用 new connection syntax 直接连接它:

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_())

关于python - QWebEngineView:显示加载进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51076948/

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