Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python QWebEngineView:显示加载进度_Python_Pyqt_Pyqt5_Qwebengineview - Fatal编程技术网

Python QWebEngineView:显示加载进度

Python QWebEngineView:显示加载进度,python,pyqt,pyqt5,qwebengineview,Python,Pyqt,Pyqt5,Qwebengineview,我将QWebEngineView小部件与PyQt5和Python3.6一起使用。 我想在加载页面时显示进度。出于演示目的,我只是使用print语句(稍后我想让一个进度条小部件出现,显示进度,完成后消失) 我连接到事件loadStarted、loadProgress和loadFinished 代码如下所示(self.browser是QWebEngineView小部件): 现在,当然,我想得到loadProgress事件的实际进度值,而不是数字42。我怎么得到这个 对不起,如果这个问题是愚蠢的。我是

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