文章目录

  • 说明
  • 一、安装PyQtWebEngine
  • 二、设计方法
    • 1.QtDesinger设计界面
    • 2.主程序调用
    • 3.实现效果

说明

结合自己的毕设需求,要在基于pyqt的桌面程序中内置一个web浏览器,特此记录。
前排提示:本文使用的方法组件是QtWebEngineWidgets,但pyqt6中不带有QtWebEngineWidgets,而且大概5.10及以上版本的pyqt5也将QtWebEngineWidgets移除了,需要自己安装,并且安装后是在pyqt5的目录中
因此要使用web界面的话,最好全部使用pyqt5进行开发,不然模块混合使用pyqt6,pyqt5会出现错误
(我这里只是一个独立界面,就只是这块用了pyqt5)。

一、安装PyQtWebEngine

首先在anaconda的虚拟环境中安装QtWebEngineWidgets,使用pip安装即可
安装命令为:
pip install PyQtWebEngine
安装完后这个模块才会出现在PyQt5的目录里, 导入方法为 :

from PyQt5 import QtWebEngineWidgets

二、设计方法

1.QtDesinger设计界面


我这界面是这样设计的,大致思想跟Android的设计似的,分为上下两个horizonlayout,再分别往里面放自己要的组件,然后下面这个webview一般在QTdesigner中是找不到的,可以先把外层的弄好,在代码里填充这块的生成代码
ui转化的py代码中:

from PyQt5 import QtCore, QtGui, QtWidgetsclass Ui_MainWindow(object):def setupUi(self, MainWindow):MainWindow.setObjectName("MainWindow")MainWindow.resize(800, 600)self.centralwidget = QtWidgets.QWidget(MainWindow)self.centralwidget.setObjectName("centralwidget")self.horizontalLayoutWidget = QtWidgets.QWidget(self.centralwidget)self.horizontalLayoutWidget.setGeometry(QtCore.QRect(10, 10, 781, 31))self.horizontalLayoutWidget.setObjectName("horizontalLayoutWidget")self.horizontalLayout = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget)self.horizontalLayout.setContentsMargins(0, 0, 0, 0)self.horizontalLayout.setObjectName("horizontalLayout")self.label = QtWidgets.QLabel(self.horizontalLayoutWidget)self.label.setObjectName("label")self.horizontalLayout.addWidget(self.label)self.url_box = QtWidgets.QTextEdit(self.horizontalLayoutWidget)self.url_box.setObjectName("url_box")self.horizontalLayout.addWidget(self.url_box)self.go_Button = QtWidgets.QPushButton(self.horizontalLayoutWidget)self.go_Button.setObjectName("go_Button")self.horizontalLayout.addWidget(self.go_Button)self.horizontalLayoutWidget_2 = QtWidgets.QWidget(self.centralwidget)self.horizontalLayoutWidget_2.setGeometry(QtCore.QRect(10, 50, 781, 501))self.horizontalLayoutWidget_2.setObjectName("horizontalLayoutWidget_2")self.horizontalLayout_2 = QtWidgets.QHBoxLayout(self.horizontalLayoutWidget_2)self.horizontalLayout_2.setContentsMargins(0, 0, 0, 0)self.horizontalLayout_2.setObjectName("horizontalLayout_2")# 此处添加self.webview = QtWebEngineWidgets.QWebEngineView(self.horizontalLayoutWidget_2)sizePolicy = QtWidgets.QSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Preferred)sizePolicy.setHorizontalStretch(0)sizePolicy.setVerticalStretch(8)sizePolicy.setHeightForWidth(self.webview.sizePolicy().hasHeightForWidth())self.webview.setSizePolicy(sizePolicy)self.webview.setObjectName("webview")self.horizontalLayout_2.addWidget(self.webview)# 此处结束MainWindow.setCentralWidget(self.centralwidget)self.menubar = QtWidgets.QMenuBar(MainWindow)self.menubar.setGeometry(QtCore.QRect(0, 0, 800, 22))self.menubar.setObjectName("menubar")MainWindow.setMenuBar(self.menubar)self.statusbar = QtWidgets.QStatusBar(MainWindow)self.statusbar.setObjectName("statusbar")MainWindow.setStatusBar(self.statusbar)self.retranslateUi(MainWindow)QtCore.QMetaObject.connectSlotsByName(MainWindow)def retranslateUi(self, MainWindow):_translate = QtCore.QCoreApplication.translateMainWindow.setWindowTitle(_translate("MainWindow", "MainWindow"))self.label.setText(_translate("MainWindow", "输入网址:"))self.go_Button.setText(_translate("MainWindow", "→"))
from PyQt5 import QtWebEngineWidgets

在其中添加注释标注的部分,便可以创建webview填充整个horizonlayout2

2.主程序调用

import sysfrom PyQt5.QtCore import *
from PyQt5.QtWidgets import *
from webtest import Ui_MainWindowclass MainWindow(QMainWindow):def __init__(self):super().__init__()self.setWindowTitle('加载外部网页的例子')self.__ui = Ui_MainWindow()self.__ui.setupUi(self)self.__ui.go_Button.clicked.connect(self.geturl)#回车键绑定按钮,但只能在文本框外进行# self.__ui.go_Button.setShortcut(Qt.Key_Return)def geturl(self):url = self.__ui.url_box.toPlainText()# 网页加载方法        self.__ui.webview.load(QUrl(url))if __name__ == '__main__':app=QApplication(sys.argv)win=MainWindow()win.show()app.exit(app.exec())

3.实现效果

这次主要完成的便是pyqt的网页浏览功能,当然也可以通过pyqt设计一个标准的浏览器,实现多标签页面等功能,如果有需要可以参考这个项目:

https://blog.csdn.net/hxxjxw/article/details/105897678

PyQT6的从零开始(三):在pyqt桌面程序简单内置网页浏览器相关推荐

  1. 微信小程序与内嵌网页交互实现支付功能

    上个月,小程序开放了新功能,支持内嵌网页,所以我就开始了小程序内嵌网页之路,之前我只是个小安卓. 内嵌网页中可使用JSSDK 1.3.0提供的接口,可坑就来了,居然不支持支付接口的调用,经过一番研究, ...

  2. 【Youtobe trydjango】Django2.2教程和React实战系列三【Django超级管理员和内置内容】

    [Youtobe trydjango]Django2.2教程和React实战系列三[Django超级管理员和内置内容] 1. Django数据初始化及超级管理员 2. 用户模块使用 1. Django ...

  3. Android ROM开发(三)——精简官方ROM并且内置ROOT权限,开启Romer之路

    Android ROM开发(三)--精简官方ROM并且内置ROOT权限,开启Romer之路 相信ROM的相关信息大家通过前几篇的学习都是有所了解了,这里就不在一一提示了,这里我们下载一个官方包,我们还 ...

  4. 从零开始用 Windows C++ 桌面程序制作方舟同人游戏(一)

    前言 阅读本博客的前置技能: C++ 基础 好像没了 qwq 为什么开这个坑 很惭愧,虽然每每想要认真的做一个游戏 demo 时,我要么只是停留在了纸面描述上,要么只是建了几个新类,用一个又一个框架/ ...

  5. macos调试linux内核,Mac下 XX 及任意程序的内置浏览器调试的实现

    本帖最后由 zwo 于 2019-12-5 22:41 编辑 0x0 前言 在iOS以及Mac上,Safari提供了功能强大的基于webkit的调试器功能,方便开发者调试APP的内置浏览器.在某聊天软 ...

  6. mfc 内嵌 本地html,MFC程序中内嵌网页,附示例工程

    最近在课程设计,因为小悠太懒了,是在不想用C++完成一些简单的文件上传下载操作,于是就想着将网页内嵌到程序中,上传下载神马的就直接使用网页Web来完成就好了,本示例中将演示在MFC程序中内嵌一个htm ...

  7. python 3.28 第三章 函数嵌套/名称空间//内置名称空间/全局名称空间/局部名称空间/作用域/函数对象/闭包函数。...

    1 函数嵌套: 函数内可以调用了其他的函数. # def max2(x,y):# if x > y:# return x# else:# return y## def max3(x,y,z):# ...

  8. 【愚公系列】2022年09月 微信小程序-webview内嵌网页的授权认证

    文章目录 前言 一.webview内嵌网页的授权认证 1.内嵌页面 2.登录页面 二.web端相关函数 1.判断是否是小程序环境 前言 随着微信小程序的广泛应用,小程序的用户越来越多,但受其小程序体积 ...

  9. JavaWeb项目打包成桌面程序,内嵌浏览器、tomcat、jre、mysql,实现一键安装

    本文介绍的仅是基本的实现逻辑(主程序代码),不包含具体的实现方法,如需全套源码或者定制成品可+V a139412339 @echo off::获取管理员权限 if exist "%Syste ...

最新文章

  1. C++ Primer 5th笔记(chap 15 OOP)抽象基类
  2. 兼容IE和FF的js脚本做法(比较常用)[问题点数:20分]
  3. 2016 中国互联网仿冒态势分析报告
  4. .NET Core 已经实现了PHP JIT,现在PHP是.NET上的一门开发语言
  5. java中List<?>是什么意思?
  6. 素数在c语言中怎么表示,请问素数怎么样表示
  7. springboot~让我习惯了TDD的开发模式
  8. Android5开机自动执行sh,自动脚本执行器
  9. 阿里云、腾讯云、Testin云测共获“中国云计算创新企业50强”
  10. CDH6.3.2安装部署
  11. ips细胞最新进展:利用iPS细胞成功培养出抑制宫颈癌繁殖的免疫杀伤T细胞,有望实现宫颈癌的免疫细胞疗法
  12. [人工智能-深度学习-35]:卷积神经网络CNN - 常见分类网络- GoogLeNet Incepetion网络架构分析与详解
  13. Android Studio适配Mac M1
  14. Smart-doc的脚本生成在线文档(精简官方文档描述)
  15. 意大利语合同翻译多少钱
  16. 从Oracle收购Sun 公司谈起
  17. r5处理器_6款Ryzen 5000移动低压处理器爆料,AMD挺会玩的
  18. 任正非回忆华为港湾“战争与和平”
  19. SqlServer查看锁表与解锁
  20. (转)speex详细介绍--概念、移植、编译、命令行等

热门文章

  1. java8新特性--并行流与串行流
  2. 私有文件服务器系统,GitHub - xty438307820/NetDisk-Private: 基于Linux的私有文件服务器(网盘)...
  3. java 0x03 和0x0a
  4. 雍正王朝上部摘要—摘自电影最top
  5. 【性能优化】MySQL常用慢查询分析工具
  6. CentOS 7+环境下PHP使用Imagick+ghostscript将PDF文件转为图片
  7. Python中__dict__属性的详解(思维导图版)
  8. 深入浅出了解Unet
  9. Codevs 1219 骑士游历
  10. 2022年3月14日-2022年3月19日(按照方案A,本周10小时,合计1219小时,剩8781小时。)