如果您确认 self.webview.load(QUrl.fromLocalFile(self.url)) 可以正确加载页面,并且在浏览器中运行 JavaScript 代码也没有问题,那么可能的原因是在 self.webview.page().runJavaScript为了确保页面加载完成后再执行 JavaScript 代码,您可以使用 QWebEngineViewloadFinished 信号。这个信号在页面加载完成后触发,可以在信号的槽函数中调用 runJavaScript。以下是如何使用 loadFinished

登录后复制

class Window(QtWidgets.QWidget):
    def __init__(self, path, bookname):
        super().__init__()
        self.webview = QtWebEngineWidgets.QWebEngineView()
        # 其他初始化代码

        # 连接loadFinished信号到槽函数
        self.webview.loadFinished.connect(self.onPageLoadFinished)

        # 加载页面
        self.webview.load(QUrl.fromLocalFile(self.url))

    def onPageLoadFinished(self, ok):
        if ok:
            # 页面加载完成后执行JavaScript代码
            self.webview.page().runJavaScript("MyJavaScript();")
        else:
            print("页面加载失败")

在上面的示例中,将 loadFinished 信号连接到名为 onPageLoadFinished 的槽函数。当页面加载完成时,将调用 onPageLoadFinished 函数,并在函数内部检查 ok 参数的值,以确保页面成功加载。然后,在条件为 ok 的情况下,调用 runJavaScript

这样做可以确保 JavaScript 代码在页面加载完成后执行,以提供正确的环境和上下文。