首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QWebEngineView:显示负载进度

QWebEngineView:显示负载进度
EN

Stack Overflow用户
提问于 2018-06-28 07:21:20
回答 1查看 2K关注 0票数 4

我使用的是QWebEngineView小部件和PyQt5以及Python3.6。当一个页面正在加载时,我想显示进度。出于演示的目的,我只是使用print语句来完成此操作(稍后,我希望让一个进度栏小部件出现,显示进度并在完成时消失)。

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

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

代码语言:javascript
复制
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。)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-28 07:54:37

没有必要传递lambda,您可以使用新连接语法直接连接它。

代码语言:javascript
复制
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)

示例:

代码语言:javascript
复制
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_())
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51076948

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档