内嵌web浏览器

摘要:
Qt5中,有一个QtWebEngineWidgets模块,通过它,可以启动基于Chromium的浏览器进程,并且把web界面内嵌入Qt程序中。参考官网说明案例我们可以实现一个内嵌浏览器,打开白月黑羽网站。整个案例的参考代码,点击这里下载链接:https://pan.baidu.com/s/1FBLdSU0w_LYSsPUzVjsQsA提取码:byhy首先使用Qtdesigner设计界面。所以需要premote一个QtWindget控件为QWebEngineView。详见参考代码中的ui文件。创建完界面后,使用命令pyside2-uicmain.ui˃ui_main.py把界面定义转化为Python代码。

有时候,我们需要在程序中嵌入浏览器,显示一个指定的网页。

Qt5中,有一个 QtWebEngineWidgets 模块,通过它,可以启动基于Chromium的浏览器(和chrome是同样的内核)进程,并且把web界面内嵌入 Qt程序中。

参考官网说明

案例

我们可以实现一个内嵌浏览器,打开白月黑羽网站。

整个案例的参考代码,点击这里下载

链接:https://pan.baidu.com/s/1FBLdSU0w_LYSsPUzVjsQsA 提取码:byhy

首先使用Qt designer设计界面。

注意:显示web内容的是 QtWebEngineWidgets 模块里面的 QWebEngineView类。

所以需要 premote 一个QtWindget 控件为 QWebEngineView。详见参考代码中的ui文件。

创建完界面后,使用命令

pyside2-uic main.ui > ui_main.py

把界面定义转化为Python代码。

然后,编写如下代码,使用 QWebEngineView 打开网址

from PySide2.QtWidgets import QApplication,QMainWindow
from ui_main import Ui_MainWindow

class MainWindow(QMainWindow):

    def __init__(self):
        super().__init__()
        # 使用ui文件导入定义界面类
        self.ui = Ui_MainWindow()
        # 初始化界面
        self.ui.setupUi(self)

        # 使用界面定义的控件,也是从ui里面访问
        self.ui.webview.load('http://www.baidu.com/')

app = QApplication([])
mainw = MainWindow()
mainw.show()
app.exec_()

上述代码的一个问题,就是不能打开新标签页,如果要支持,可以使用QTabWidget。参考代码如下

from PySide2.QtCore import *
from PySide2.QtWidgets import *
from PySide2.QtWebEngineWidgets import *

class TabWidget(QTabWidget):
    def __init__(self, *args, **kwargs):
        QTabWidget.__init__(self, *args, **kwargs)
        url = QUrl("https://www.163.com")
        view = HtmlView(self)
        view.load(url)
        ix = self.addTab(view, "加载中 ...")
        self.resize(800, 600)

class HtmlView(QWebEngineView):
    def __init__(self, *args, **kwargs):
        QWebEngineView.__init__(self, *args, **kwargs)
        self.tab = self.parent()

    def createWindow(self, windowType):
        if windowType == QWebEnginePage.WebBrowserTab:
            webView = HtmlView(self.tab)
            ix = self.tab.addTab(webView, "加载中 ...")
            self.tab.setCurrentIndex(ix)
            return webView
        return QWebEngineView.createWindow(self, windowType)

if __name__ == "__main__":
    import sys
    app = QApplication(sys.argv)
    main = TabWidget()
    main.show()
    sys.exit(app.exec_())

免责声明:文章转载自《内嵌web浏览器》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇uniapp——点击图片放大预览MySQL联合多表更新和删除下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Mac+docker+flask

1、先要保证mac电脑安装docker 安装的话可以通过命令brew install docker 安装成功后启动,docker 然后在终端执行docker version 或者docker info如果输出相应的信息, 表示docker已经在正常运行 2、创建一个文件夹 mkdir docker-demo cd docker-demo 创建dockerf...

玩转StyleGan2:手把手教你安装并运行项目!

时间过得是真快,离上次分享《用AI生成一堆漂亮且独一无二的女朋友!》已经快过去半个多月了。光分享效果,而不分享如何实现,这不是我的风格。所以从今天开始,我会带大家一起玩转这个强大的高清人脸生成项目(不懂开源项目的可以理解为软件)。 目前规划了几个主题 1. 安装并运行 2. 虚拟人脸编辑,操控虚拟人物表情 3. 真实人脸编辑,操控任何人的表情。 4. 云端...

Django的Settings中Templates的路径设置

## mysite/mysite/settings.py## mysite是项目名TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'templa...

“永恒之蓝"漏洞的紧急应对--毕业生必看

  早上6点多起床了,第一次起这么早,昨天晚上12点多,看到了一则紧急通知,勒索软件通过微软“永恒之蓝"漏洞针对教育网进行了大规模的攻击,而且有很多同学中招。中招后的结果如下图所示。(我的新书《Python爬虫开发与项目实战》出版了,大家可以看一下样章) 下面看一下紧急通知的内容: 关于防范ONION勒索软件病毒攻击的紧急通知 校园网用户: 近期国内多所院...

Adobe Edge Animate 1.0 概述

AdobeEdgeAnimate1.0概述 版权声明:本文版权属于 北京联友天下科技发展有限公司。转载的时候请注明版权和原文地址。 一、主界面 从主界面我们可以直接进入: 1.工程操作(ProjectCommands):打开之前保存的工程(OpenFile...)或者新建一个工程(CreateNew...); 2.从最近使用文件列表中(RecentFil...

用HTML,CSS和JavaScript创建iPhone/iPad应用程序

象大多数iPad粉丝和程序员一样,我有一个梦想,那就是如果不需要昂贵的Apple设备,不要繁琐的审批程序,不要为发布应用交钱就能开发iPad 应用程序该多好.现在这个梦想就要实现了,那就是网页应用程序. 那么,怎样才能让网页象看起来象本机程序一样呢?你需要做这些工作: 全屏幕:(去掉浏览器的地址栏和按钮栏);防止窗口滚动和缩放; 响应多点触摸和手势事件;...