python内嵌浏览器_内嵌web浏览器

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

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

参考官网说明

案例

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

首先使用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_())

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值