我使用的是QWebEngineView小部件和PyQt5以及Python3.6。当一个页面正在加载时,我想显示进度。出于演示的目的,我只是使用print语句来完成此操作(稍后,我希望让一个进度栏小部件出现,显示进度并在完成时消失)。
我连接到事件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。)
发布于 2018-06-28 07:54:37
没有必要传递lambda,您可以使用新连接语法直接连接它。
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_())https://stackoverflow.com/questions/51076948
复制相似问题