最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

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

业界 admin 3浏览 0评论

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

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/')

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")

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_())

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

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/')

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")

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_())

发布评论

评论列表 (0)

  1. 暂无评论