QWebEngineView().loadFinished 后如何等待脚本完成?
How to wait for scripts to finish after QWebEngineView().loadFinished?
我正在尝试使用 PyQt5 将 HTML 文件呈现为 PDF。不幸的是,我的 HTML 页面加载缓慢,但我找不到等待它加载的方法。我的问题是这样的;恢复执行后,如何让 PyQt5 等待几秒钟?或者有没有更好的等待JS脚本执行的方法?
app = QtWidgets.QApplication(sys.argv)
loader = QtWebEngineWidgets.QWebEngineView()
loader.setZoomFactor(1)
loader.page().pdfPrintingFinished.connect(loader.close)
loader.load(QtCore.QUrl(url))
def emit_pdf(finished):
loader.page().printToPdf("test.pdf")
loader.loadFinished.connect(emit_pdf)
app.exec()
我尝试使用 QTimer 但无法正常工作。这是它的样子。
app = QtWidgets.QApplication(sys.argv)
loader = QtWebEngineWidgets.QWebEngineView()
loader.setZoomFactor(1)
loader.page().pdfPrintingFinished.connect(loader.close)
loader.load(QtCore.QUrl(url))
timer = QtCore.QTimer()
timer.setInterval(2000)
def run_emit():
loader.loadFinished.connect(emit_pdf)
timer.timeout.connect(run_emit)
timer.start()
def emit_pdf(finished):
timer.stop()
loader.page().printToPdf("test.pdf")
app.exec()
没有明确等待最终产品。与使用 QTimer.start()
或 QTimer.stop()
不同,QTimer.singleShot()
与 lambda 函数一起工作。
def emit_pdf(finished):
QTimer.singleShot(2000, lambda: loader.page().printToPdf("test.pdf"))
app.exec()
我添加这个以防解决方案评论丢失。
我正在尝试使用 PyQt5 将 HTML 文件呈现为 PDF。不幸的是,我的 HTML 页面加载缓慢,但我找不到等待它加载的方法。我的问题是这样的;恢复执行后,如何让 PyQt5 等待几秒钟?或者有没有更好的等待JS脚本执行的方法?
app = QtWidgets.QApplication(sys.argv)
loader = QtWebEngineWidgets.QWebEngineView()
loader.setZoomFactor(1)
loader.page().pdfPrintingFinished.connect(loader.close)
loader.load(QtCore.QUrl(url))
def emit_pdf(finished):
loader.page().printToPdf("test.pdf")
loader.loadFinished.connect(emit_pdf)
app.exec()
我尝试使用 QTimer 但无法正常工作。这是它的样子。
app = QtWidgets.QApplication(sys.argv)
loader = QtWebEngineWidgets.QWebEngineView()
loader.setZoomFactor(1)
loader.page().pdfPrintingFinished.connect(loader.close)
loader.load(QtCore.QUrl(url))
timer = QtCore.QTimer()
timer.setInterval(2000)
def run_emit():
loader.loadFinished.connect(emit_pdf)
timer.timeout.connect(run_emit)
timer.start()
def emit_pdf(finished):
timer.stop()
loader.page().printToPdf("test.pdf")
app.exec()
没有明确等待最终产品。与使用 QTimer.start()
或 QTimer.stop()
不同,QTimer.singleShot()
与 lambda 函数一起工作。
def emit_pdf(finished):
QTimer.singleShot(2000, lambda: loader.page().printToPdf("test.pdf"))
app.exec()
我添加这个以防解决方案评论丢失。