前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python pyqt5 QtWebEngineWidgets 调用JS

python pyqt5 QtWebEngineWidgets 调用JS

作者头像
用户5760343
发布2019-07-22 13:41:37
3.1K0
发布2019-07-22 13:41:37
举报
文章被收录于专栏:sktj

-- coding: utf-8 --

''' 【简介】 QWebView中网页调用JavaScript

'''

from PyQt5.QtWidgets import QApplication , QWidget , QVBoxLayout , QPushButton from PyQt5.QtWebEngineWidgets import QWebEngineView import sys

创建一个 application实例

app = QApplication(sys.argv) win = QWidget() win.setWindowTitle('Web页面中的JavaScript与 QWebEngineView交互例子')

创建一个垂直布局器

layout = QVBoxLayout() win.setLayout(layout)

创建一个 QWebEngineView 对象

view = QWebEngineView() view.setHtml(''' <html> <head> <title>A Demo Page</title>

代码语言:javascript
复制
  <script language="javascript">
    // Completes the full-name control and
    // shows the submit button
    function completeAndReturnName() {
      var fname = document.getElementById('fname').value;
      var lname = document.getElementById('lname').value;
      var full = fname + ' ' + lname;

      document.getElementById('fullname').value = full;
      document.getElementById('submit-btn').style.display = 'block';

      return full;
    }
  </script>
</head>

<body>
  <form>
    <label for="fname">First name:</label>
    <input type="text" name="fname" id="fname"></input>
    <br />
    <label for="lname">Last name:</label>
    <input type="text" name="lname" id="lname"></input>
    <br />
    <label for="fullname">Full name:</label>
    <input disabled type="text" name="fullname" id="fullname"></input>
    <br />
    <input style="display: none;" type="submit" id="submit-btn"></input>
  </form>
</body>

</html> ''')

创建一个按钮去调用 JavaScript代码

button = QPushButton('设置全名')

def js_callback(result): print(result)

def complete_name(): view.page().runJavaScript('completeAndReturnName();', js_callback)

按钮连接 'complete_name'槽,当点击按钮是会触发信号

button.clicked.connect(complete_name)

把QWebView和button加载到layout布局中

layout.addWidget(view) layout.addWidget(button)

显示窗口和运行app

win.show() sys.exit(app.exec_())


-- coding: utf-8 --

''' 【简介】 QWebView中网页调用JavaScript

'''

from PyQt5.QtWidgets import QApplication , QWidget , QVBoxLayout from PyQt5.QtWebEngineWidgets import QWebEngineView from PyQt5.QtCore import QUrl from MySharedObject import MySharedObject from PyQt5.QtWebChannel import QWebChannel import sys

创建一个 application实例

app = QApplication(sys.argv) win = QWidget() win.setWindowTitle('Web页面中的JavaScript与 QWebEngineView交互例子')

创建一个垂直布局器

layout = QVBoxLayout() win.setLayout(layout)

创建一个 QWebEngineView 对象

view = QWebEngineView() htmlUrl = 'http://127.0.0.1:8020/web/index.html' view.load( QUrl( htmlUrl ))

创建一个 QWebChannel对象,用来传递pyqt参数到JavaScript

channel = QWebChannel( ) myObj = MySharedObject() channel.registerObject( "bridge", myObj ) view.page().setWebChannel(channel)

把QWebView和button加载到layout布局中

layout.addWidget(view)

显示窗口和运行app

win.show() sys.exit(app.exec_())


-- coding: utf-8 --

''' 【简介】 QWebEngineView加载网页,使网页中的用JavaScript 失效

'''

from PyQt5.QtWidgets import QApplication , QWidget , QVBoxLayout, QPushButton from PyQt5.QtWebEngineWidgets import QWebEngineView , QWebEngineSettings from PyQt5.QtCore import QUrl from MySharedObject import MySharedObject from PyQt5.QtWebChannel import QWebChannel from PyQt5.QtGui import QIcon import sys

class Web(QWebEngineView):

代码语言:javascript
复制
def load(self, url):
    self.setUrl(QUrl(url))

def adjustTitle(self):
    #self.setWindowTitle(self.title())
    pass

def disableJS(self):
    settings = QWebEngineSettings.globalSettings()
    settings.setAttribute(QWebEngineSettings.JavascriptEnabled, False)

class Main(QWidget):

代码语言:javascript
复制
def __init__(self):
    super().__init__()
    self.initUI()

def initUI(self):
    self.setWindowTitle('Name')
    self.setWindowIcon(QIcon('./images/cartoon1.ico'))  
    web = Web()                                         
    
    web.load("http://127.0.0.1:8020/web/index2.html")
    web.disableJS()
    
    self.btn = QPushButton('Button', self)
    self.btn.resize(self.btn.sizeHint())
    lay = QVBoxLayout(self)
    lay.addWidget(self.btn)
    lay.addWidget(web)

if name=="main": app = QApplication(sys.argv) main = Main() main.show() sys.exit(app.exec_())

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2019.07.20 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • -- coding: utf-8 --
  • 创建一个 application实例
  • 创建一个垂直布局器
  • 创建一个 QWebEngineView 对象
  • 创建一个按钮去调用 JavaScript代码
  • 按钮连接 'complete_name'槽,当点击按钮是会触发信号
  • 把QWebView和button加载到layout布局中
  • 显示窗口和运行app
  • -- coding: utf-8 --
  • 创建一个 application实例
  • 创建一个垂直布局器
  • 创建一个 QWebEngineView 对象
  • 创建一个 QWebChannel对象,用来传递pyqt参数到JavaScript
  • 把QWebView和button加载到layout布局中
  • 显示窗口和运行app
  • -- coding: utf-8 --
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档