pyqt5的QWebEngineView 使用模板1
說明1:關於QWebEngineView
pyqt5 已經拋棄 QtWebKit和QtWebKitWidgets,而使用最新的QtWebEngineWidgets。
QtWebEngineWidgets,是基於chrome瀏覽器核心引擎的。
說明2:關於左鍵點選頁面跳轉
其中,最讓糾結的就是實現左鍵點選頁面跳轉了。
在chrome瀏覽器上,有些頁面,左鍵點選,會直接建立一個新的tab來呈現網頁。
在使用QWebEngineView時,如果不做特殊處理,這樣的左鍵點選,是根本沒有反應的。
那怎麼辦?就需要重寫QWebEngineView的createWindow方法。
說明3:關於createWindow方法重寫
在重寫QWebEngineView的createWindow方法時,又有兩種寫法。
第一種,是直接在本視窗新建tab的方式。 (不推薦使用這種方式)
注:這種方式有個問題,因為新建的tab覆蓋了原來的tab,所以,原來tab的所有資訊都找不到了,如瀏覽,賬號,密碼等。
class WebEngineView(QWebEngineView):
# 重寫createwindow()
def createWindow(self, QWebEnginePage_WebWindowType):
return self
第二種,就是新建視窗的方式了。程式碼如下。(推薦使用這種方式)
【如下程式碼,完全複製,直接執行,即可使用】
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
################################################
#######建立主視窗
################################################
class MainWindow(QMainWindow):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.setWindowTitle('My Browser')
self.showMaximized()
self.webview = WebEngineView()
self.webview.load(QUrl(""))
self.setCentralWidget(self.webview)
################################################
#######建立瀏覽器
################################################
class WebEngineView(QWebEngineView):
windowList = []
# 重寫createwindow()
def createWindow(self, QWebEnginePage_WebWindowType):
new_webview = WebEngineView()
new_window = MainWindow()
new_window.setCentralWidget(new_webview)
#new_window.show()
self.windowList.append(new_window) #注:沒有這句會崩潰!!!
return new_webview
################################################
#######程式入門
################################################
if __name__ == "__main__":
app = QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
本文如有幫助,敬請留言鼓勵。
本文如有錯誤,敬請留言改進。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/2001/viewspace-2813129/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- pyqt5的QWebEngineView使用模板3QTWebView
- Windows下QtCreator使用QWebEngineViewWindowsQTWebView
- pyqt5的下載進度條 實現模板QT
- QWebEngineView去除自帶CookieWebViewCookie
- 使用pyqt5記錄QT
- Python PyQT5的入門使用PythonQT
- Flask——模板的使用Flask
- 【PyQt5】QListWidget 使用方法QT
- [PyQt5] QListWidget 使用方法QT
- 【C++進階筆記】(1)函式模板的宣告及使用C++筆記函式
- 小程式模板的使用
- pyqt5的mdimainwindowQTAI
- PyQt5 GUI程式設計(元件使用)QTGUI程式設計元件
- PyQt5開發環境配置並使用QT開發環境
- 模板引擎使用詳解:包含公共模板
- 模板初學者指南1 (轉)
- 1.Prefix字首和【模板】
- 使用 PyQt5 實現圖片檢視器QT
- 使用PyQt5為YoloV5新增介面(一)QTYOLO
- 怎麼使用 pyqt5 的 textEdit 控制元件,實現拖拽功能?QT控制元件
- 【PyQt5】使用 QListWidget 實現 刪除 與 新增QT
- [PyQt5] 使用 QListWidget 實現 刪除 與 新增QT
- 小程式的模板與元件的基本使用元件
- 前端模板引擎doT.js的使用前端JS
- 小程式如何使用共用的WXML模板XML
- Django學習(二) 之 模板的使用Django
- python Django模板的使用方法PythonDjango
- extjs模板的使用:Ext.XTemplateJS
- pyqt5寫的摩斯密碼QT密碼
- 【Python進階-PyQt5】00搭建PyQt5環境PythonQT
- AS 使用 Flutter 程式碼模板Flutter
- Express 文件(使用模板引擎)Express
- Django之mako模板使用Django
- 免下載就能用的主圖模板,免費分享模板使用教程!
- PyQt5 概覽QT
- PyQT5繪圖QT繪圖
- PyQT5之QTreeViewQTView
- 乾貨系列——模板之圖論1圖論