欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

PyQt5系列教程(十八)打开网页

PyQt5开发 迷途小书童 3年前 (2021-08-04) 2385次浏览 0个评论

软硬件环境

  • Windows 10 64bit
  • Anaconda3 with python 3.7
  • PyCharm 2020.1
  • PyQt5

前言

PyQt5 使用 QWebEngineView 控件来展示 HTML 页面,对老版本中的 QWebView 类已经不再维护,因为 QWebEngineView 使用 Chromium 内核可以给用户带来更好的体验。

Qt 慢慢淘汰了古老的 WebKit,取而代之的是使用 WebEngine 框架。WebEngine 是基于谷歌的 Chromium 引擎开发的,也就是内部集成了谷歌的 Chromium 引擎。

在PyQt5中打开网页

要使用 WebEngine,需要安装依赖库 PyQtWebEngine

pip install PyQtWebEngine

以打开我的博客网站为例,来看下面的代码

import sys

from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWidgets import *
from PyQt5.QtWebEngineWidgets import QWebEngineView

class MainWindow(QMainWindow):
    def __init__(self):
        super(MainWindow, self).__init__()
        self.setWindowTitle('网页示例')
        self.setGeometry(10, 20, 1080, 720)
        self.browser = QWebEngineView()
        self.browser.load(QUrl('https://xugaoxiang.com'))
        self.setCentralWidget(self.browser)

if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = MainWindow()
    win.show()
    app.exec_()

程序执行效果如下

pyqt5 webengineview

核心代码其实就2句

self.browser = QWebEngineView()
self.browser.load(QUrl('https://xugaoxiang.com'))

实例化 QWebEngineView 并调用方法 load,传入网站的 url 就可以了。

load 方法除了可以传入远程的 url,也可以传入本地的 HTML 文件,如下

self.browser = QWebEngineView()
self.browser.load(QUrl('file:///test.html'))

简单写个 test.html 文件

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>本地网页文件示例</title>
</head>
<body>
    <p>PyQt5打开本地HTML文件示例</p>
</body>
</html>

pyqt5 webengineview

QWebEngineView 除了 load 方法,它还提供了另外一种方法, setHtml,它是以页面的 html 代码为参数,比如

self.browser = QWebEngineView()
self.browser.setHtml('''
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>本地网页文件示例</title>
    </head>
    <body>
        <p>PyQt5打开本地HTML文件示例,采用setHtml方法</p>
    </body>
    </html>
''')

pyqt5 webengineview

源码下载

https://github.com/xugaoxiang/learningPyQt5

PyQt5系列教程

更多 PyQt5 教程,请移步

https://xugaoxiang.com/category/python/pyqt5/

喜欢 (1)

您必须 登录 才能发表评论!