PyQt5|PySide2 UI界面内嵌web浏览器的方法
生活随笔
收集整理的這篇文章主要介紹了
PyQt5|PySide2 UI界面内嵌web浏览器的方法
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
PyQt5|PySide2 程序內嵌web瀏覽器的方法
內嵌web瀏覽器
有時候,我們需要在程序中嵌入瀏覽器,顯示一個指定的網頁。
Qt5中,有一個 QtWebEngineWidgets 模塊,通過它,可以啟動基于Chromium的瀏覽器(和chrome是同樣的內核)進程,并且把web界面內嵌入 Qt程序中。
參考官網說明
案例
我們可以實現一個內嵌瀏覽器,打開白月黑羽網站。
整個案例的參考代碼,點擊這里下載
鏈接:https://pan.baidu.com/s/1FBLdSU0w_LYSsPUzVjsQsA 提取碼:byhy
首先使用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_MainWindowclass 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 webViewreturn QWebEngineView.createWindow(self, windowType)if __name__ == "__main__":import sysapp = QApplication(sys.argv)main = TabWidget()main.show()sys.exit(app.exec_())總結
以上是生活随笔為你收集整理的PyQt5|PySide2 UI界面内嵌web浏览器的方法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于链表的学习心得
- 下一篇: 关于在winform窗体中内嵌浏览器控件