肥仔教程网

SEO 优化与 Web 开发技术学习分享平台

19.1 PyQt5 Web操作-QWebEngineView

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.connect(self.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

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言