百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 文章教程 > 正文

19.1 PyQt5 Web操作-QWebEngineView

yund56 2025-04-11 20:29 27 浏览

1.QWebEngineView简介

PyQt5中QWebEngineView用于显示 Web 内容(如 HTML 页面),它基于 Chromium 内核实现,可以在应用程序中嵌入浏览器功能。

2.QWebEngineView案例

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QWidget, QLineEdit, QPushButton, QHBoxLayout
from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings
from PyQt5.QtCore import QUrl,Qt

class BrowserWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQt5 Web Browser")
        self.resize(1920, 1080)

        # 创建 QWebEngineView 对象
        self.browser = QWebEngineView()
        
        settings = self.browser.settings()
        settings.setAttribute(QWebEngineSettings.JavascriptEnabled, True)

        # 创建地址栏
        self.url_bar = QLineEdit()
        self.url_bar.returnPressed.connect(self.navigate_to_url)

        # 创建导航按钮
        self.back_button = QPushButton("<") self.back_button.clicked.connectself.browser.back self.forward_button='QPushButton("'>")
        self.forward_button.clicked.connect(self.browser.forward)

        self.reload_button = QPushButton("Reload")
        self.reload_button.clicked.connect(self.browser.reload)

        # 创建导航栏布局
        nav_bar = QHBoxLayout()
        nav_bar.addWidget(self.back_button)
        nav_bar.addWidget(self.forward_button)
        nav_bar.addWidget(self.reload_button)
        nav_bar.addWidget(self.url_bar)

        # 主布局
        layout = QVBoxLayout()
        layout.addLayout(nav_bar)
        layout.addWidget(self.browser)

        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)

        # 加载默认页面
        self.browser.setUrl(QUrl("https://www.baidu.com"))
        self.browser.urlChanged.connect(self.update_url_bar)

    def navigate_to_url(self):
        url = self.url_bar.text()
        self.browser.setUrl(QUrl(url))

    def update_url_bar(self, url):
        self.url_bar.setText(url.toString())

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = BrowserWindow()
    window.show()
    sys.exit(app.exec_())

3.运行结果

4.常用方法

方法和属性

描述

load(QUrl)

加载给定的 QUrl 对象表示的网页

setUrl(QUrl)

设置并加载给定的 URL,与 load() 类似

setHtml(html)

加载给定的 HTML 内容

back()

导航到浏览历史中的上一页

forward()

导航到浏览历史中的下一页

reload()

重新加载当前页面

stop()

停止当前页面的加载

setZoomFactor(factor)

设置页面缩放比例。factor 是一个浮点数,1.0 表示原始大小,2.0 表示放大两倍,0.5 表示缩小一半。

zoomFactor()

返回当前的缩放比例

setPage(QWebEnginePage)

设置要使用的 QWebEnginePage 对象,QWebEnginePage 负责处理 Web 内容

page()

返回当前的 QWebEnginePage 对象

findText(str)

在当前页面中查找给定的文本

triggerPageAction(QWebEnginePage.WebAction, checked: bool)

触发指定的页面操作,如复制、粘贴、打印等。常见的操作包括:QWebEnginePage.Copy QWebEnginePage.Paste QWebEnginePage.Print

title()

返回当前页面的标题

icon()

返回当前页面的图标

setAttribute(attribute: QWebEngineSettings.WebAttribute, on bool)

方法用于配置 QWebEngineView 的行为和特性,第一个属性是(
QWebEngineSettings.WebAttribute
),第二个属性布尔值,用于开启或关闭该属性

  • QWebEngineSettings.WebAttribute 枚举类型:
  1. QWebEngineSettings.JavascriptEnabled
  2. 功能: 启用或禁用 JavaScript 。
  3. 默认值: 启用 (True)。
  4. 用途: 网页通常依赖 JavaScript 来实现动态功能,禁用后可能导致某些网页功能失效。
  5. QWebEngineSettings.JavascriptCanOpenWindows
  6. 功能: 允许或禁止 JavaScript 打开新窗口(如通过 window.open())。
  7. 默认值: 禁用 (False)。
  8. 用途: 控制页面中是否允许弹出窗口行为。
  9. QWebEngineSettings.JavascriptCanAccessClipboard
  10. 功能: 允许或禁止 JavaScript 访问剪贴板。
  11. 默认值: 禁用 (False)。
  12. 用途: 控制 JavaScript 是否可以读取或写入用户剪贴板(例如复制粘贴操作)。
  13. QWebEngineSettings.LocalStorageEnabled
  14. 功能: 启用或禁用 HTML5 本地存储。
  15. 默认值: 启用 (True)。
  16. 用途: 一些 Web 应用使用本地存储来存储数据,禁用此属性可能会影响某些功能。
  17. QWebEngineSettings.PluginsEnabled
  18. 功能: 启用或禁用插件支持(如 Flash 插件)。
  19. 默认值: 禁用 (False)。
  20. 用途: 网页插件的使用越来越少,但某些旧网站仍可能依赖 Flash 等插件。
  21. QWebEngineSettings.FullScreenSupportEnabled
  22. 功能: 启用或禁用全屏支持。
  23. 默认值: 禁用 (False)。
  24. 用途: 允许页面进入全屏模式。
  25. QWebEngineSettings.ScrollAnimatorEnabled
  26. 功能: 启用或禁用平滑滚动。
  27. 默认值: 启用 (True)。
  28. 用途: 提供页面的平滑滚动效果,禁用后滚动行为变得更生硬。
  29. QWebEngineSettings.AutoLoadImages
  30. 功能: 启用或禁用图像的自动加载。
  31. 默认值: 启用 (True)。
  32. 用途: 控制页面是否自动加载图片,禁用后图片将不会显示。
  33. QWebEngineSettings.TouchIconsEnabled
  34. 功能: 启用或禁用触摸图标的加载。
  35. 默认值: 启用 (True)。
  36. 用途: 允许网站加载特定的触摸图标(通常用于移动设备上的书签)。
  37. QWebEngineSettings.ErrorPageEnabled
  38. 功能: 启用或禁用错误页面。
  39. 默认值: 启用 (True)。
  40. 用途: 当页面加载失败时,显示错误页面。
  41. QWebEngineSettings.GeolocationEnabled
  42. 功能: 启用或禁用地理位置支持。
  43. 默认值: 禁用 (False)。
  44. 用途: 控制网页是否可以访问用户的地理位置。
  45. QWebEngineSettings.XSSAuditingEnabled
  46. 功能: 启用或禁用 XSS (跨站脚本) 审计功能。
  47. 默认值: 禁用 (False)。
  48. 用途: XSS 审计用于检测并阻止跨站脚本攻击,通常会增加安全性。
  49. QWebEngineSettings.WebGLEnabled
  50. 功能: 启用或禁用 WebGL 支持。
  51. 默认值: 启用 (True)。
  52. 用途: WebGL 用于在网页中渲染 3D 图形,禁用后某些 3D 内容无法显示。
  53. QWebEngineSettings.Accelerated2dCanvasEnabled
  54. 功能: 启用或禁用 2D 画布的硬件加速。
  55. 默认值: 启用 (True)。
  56. 用途: 对 HTML5 画布的渲染进行硬件加速,提高图形性能。
  57. QWebEngineSettings.AutoLoadIconsForPage
  58. 功能: 启用或禁用页面图标(如 favicon)的自动加载。
  59. 默认值: 启用 (True)。
  60. 用途: 控制是否自动加载站点图标。

5.常用信号

方法

描述

loadStarted()

当页面开始加载时触发

loadProgress(progress: int)

在页面加载过程中持续发出信号,参数 progress 是当前加载的进度(从 0 到 100 表示加载完成)。

loadFinished(ok: bool)

当页面加载完成时发出信号,参数 ok 是布尔值,指示加载是否成功。如果为 True,表示加载成功;否则为 False

urlChanged(url: QUrl)

当页面的 URL 发生变化时触发,通常用于更新地址栏

titleChanged(title: QString)

页面标题发生变化时触发,通常用于更新窗口标题或标签

iconChanged(icon: QIcon)

当页面的图标(favicon)发生变化时触发

renderProcessTerminated(status: QWebEnginePage.RenderProcessTerminationStatus, exit_code: int)

当页面的渲染进程被终止时触发。

selectionChanged()

当页面中的选中内容发生变化时触发。比如用户选中文本时会触发此信号

6. 常见错误

异常提示:ModuleNotFoundError: No module named 'PyQt5.QtWebEngineWidgets' 解决方案:单独安装一下QtWebEngineWidgets,pip install PyQt5 PyQtWebEngine

相关推荐

SM小分队Girls on Top,女神战队少了f(x)?

这次由SM娱乐公司在冬季即将开演的smtown里,将公司的所有女团成员集结成了一个小分队project。第一位这是全面ACE的大姐成员权宝儿(BoA),出道二十年,在日本单人销量过千万,韩国国内200...

韩国女团 aespa 首场 VR 演唱会或暗示 Quest 3 将于 10 月推出

AmazeVR宣布将在十月份举办一场现场VR音乐会,观众将佩戴MetaQuest3进行体验。韩国女团aespa于2020年11月出道,此后在日本推出了三张金唱片,在韩国推出了...

韩网热议!女团aespa成员Giselle在长腿爱豆中真的是legend

身高163的Giselle,长腿傲人,身材比例绝了...

假唱而被骂爆的女团:IVE、NewJeans、aespa上榜

在韩国,其实K-pop偶像并不被认为是真正的歌手,因为偶像们必须兼备舞蹈能力、也经常透过对嘴来完成舞台。由于科技的日渐发达,也有许多网友会利用消音软体来验证K-pop偶像到底有没有开麦唱歌,导致假唱这...

新女团Aespa登时尚大片 四个少女四种style

来源:环球网

韩国女团aespa新歌MV曝光 画面梦幻造型超美

12月20日,韩国女团aespa翻唱曲《DreamsComeTrue》MV公开,视频中,她们的造型超美!WINTER背后长出一双梦幻般的翅膀。柳智敏笑容甜美。宁艺卓皮肤白皙。GISELLE五官精致...

女网友向拳头维权,自称是萨勒芬妮的原型?某韩国女团抄袭KDA

女英雄萨勒芬妮(Seraphine)是拳头在2020年推出的第五位新英雄,在还没有正式上线时就备受lsp玩家的关注,因为她实在是太可爱了。和其他新英雄不同的是,萨勒芬妮在没上线时就被拳头当成虚拟偶像来...

人气TOP女团是?INS粉丝数见分晓;TWICE成员为何在演唱会落泪?

现在的人气TOP女团是?INS粉丝数见分晓!现在爱豆和粉丝之间的交流方法变得多种多样,但是Instagram依然是主要的交流手段。很多粉丝根据粉丝数评价偶像的人气,拥有数百、数千万粉丝的组合作为全球偶...

韩国女团MVaespa Drama MV_韩国女团穿超短裙子跳舞

WelcometoDrama.Pleasefollow4ruleswhilewatchingtheDrama.·1)Lookbackimmediatelywhenyoufe...

aespa师妹团今年将出道! SM职员亲口曝「新女团风格、人数」

记者刘宛欣/综合报导南韩造星工厂SM娱乐曾打造出东方神起、SUPERJUNIOR、少女时代、SHINee、EXO等传奇团体,近年推出的aespa、RIIZE更是双双成为新生代一线团体,深受大众与粉丝...

南韩最活跃的女团aespa,新专辑《Girls》即将发布,盘点昔日经典

女团aespa歌曲盘点,新专辑《Girls》即将发布,期待大火。明天也就是2022年的7月8号,aespa新专辑《Girls》即将发行。这是继首张专辑《Savage》之后,时隔19个月的第二张专辑,这...

章泽天女团aespa出席戛纳晚宴 宋康昊携新片亮相

搜狐娱乐讯(山今/文玄反影/图科明/视频)法国时间5月23日晚,女团aespa、宋康昊、章泽天等明星亮相戛纳晚宴。章泽天身姿优越。章泽天肩颈线优越。章泽天双臂纤细。章泽天仪态端正。女团aespa亮...

Aespa舞台暴露身高比例,宁艺卓脸大,柳智敏有“TOP”相

作为SM公司最新女团aespa,初舞台《BlackMamba》公开,在初舞台里,看得出来SM公司是下了大功夫的,虽然之前SM公司新出的女团都有很长的先导片,但是aespa显然是有“特殊待遇”。运用了...

AESPA女团成员柳智敏karina大美女

真队内速度最快最火达成队内首个且唯一两百万点赞五代男女团中输断层第一(图转自微博)...

对来学校演出的女团成员语言性骚扰?韩国这所男高的学生恶心透了

哕了……本月4日,景福男子高中相关人士称已经找到了在SNS中上传对aespa成员进行性骚扰文章的学生,并开始着手调查。2日,SM娱乐创始人李秀满的母校——景福高中迎来了建校101周年庆典活动。当天,S...