美文网首页
pyqt5的runJavaScript-使用模板

pyqt5的runJavaScript-使用模板

作者: 一心狮 | 来源:发表于2020-09-01 06:53 被阅读0次

    runJavaScript 的说明

    QWebEnginePage 有一个 runJavaScript 方法,支持回调函数。

    使用方法1
    只运行JavaScript,没有回调

       def run_js(self):
            js_string = '''
            alert("hello,world!");
            '''
    
            self.webview.page().runJavaScript(js_string)
    

    使用方法2
    运行JavaScript,并存在回调

        def run_js2(self):
            js_string = '''
            function myFunction()
            {
                return document.body.scrollWidth;
            }
                    
            myFunction();
            '''
    
            self.webview.page().runJavaScript(js_string , self.js_callback)
    
    
    
        # 回调函数
        def js_callback(self,result):
            print(result)
            QMessageBox.information(self, "提示", str(result))
    
    

    完整代码,如下所示。

    【如下代码,完全复制,直接运行,即可使用】

    import sys
    from PyQt5.QtWidgets import *
    from PyQt5.QtCore import *
    from PyQt5.QtWebEngineWidgets import QWebEngineView
    ################################################
    #######创建主窗口
    ################################################
    class MainWindow(QMainWindow):
        def __init__(self, *args, **kwargs):
            super().__init__(*args, **kwargs)
            self.setWindowTitle('My Browser')
            self.showMaximized()
    
            #####放入WebEngineView
            self.webview = WebEngineView()
            self.webview.load(QUrl("https://www.baidu.com"))
            self.setCentralWidget(self.webview)
    
            #####web页面加载完毕,调用函数
            self.webview.page().loadFinished.connect(self.run_js)
            self.webview.page().loadFinished.connect(self.run_js2)
    
    
    
        ########运行js脚本,没有回调########
        def run_js(self):
            js_string = '''
            alert("hello,world!");
            '''
    
            self.webview.page().runJavaScript(js_string)
    
    
        ########运行js脚本,有回调########
        def run_js2(self):
            js_string = '''
            function myFunction()
            {
                return document.body.scrollWidth;
            }
                    
            myFunction();
            '''
    
            self.webview.page().runJavaScript(js_string , self.js_callback)
    
    
    
        # 回调函数
        def js_callback(self,result):
            print(result)
            QMessageBox.information(self, "提示", str(result))
    
    
    ################################################
    #######创建浏览器
    ################################################
    class WebEngineView(QWebEngineView):
        windowList = []
    
        # 重写createwindow()
        def createWindow(self, QWebEnginePage_WebWindowType):
            new_webview =   WebEngineView()
            new_window = MainWindow()
            new_window.setCentralWidget(new_webview)
            #new_window.show()
            self.windowList.append(new_window)  #注:没有这句会崩溃
            return new_webview
    
    
    ################################################
    #######程序入门
    ################################################
    if __name__ == "__main__":
        app = QApplication(sys.argv)
        w = MainWindow()
        w.show()
        sys.exit(app.exec_())
    

    本文如有帮助,敬请留言鼓励。
    本文如有错误,敬请留言改进。

    相关文章

      网友评论

          本文标题:pyqt5的runJavaScript-使用模板

          本文链接:https://www.haomeiwen.com/subject/tzqpjktx.html