pyqt5的QWebEngineView 使用模板的方法
說明1:關(guān)于QWebEngineView
pyqt5 已經(jīng)拋棄 QtWebKit和QtWebKitWidgets,而使用最新的QtWebEngineWidgets。
QtWebEngineWidgets,是基于chrome瀏覽器內(nèi)核引擎的。
說明2:關(guān)于左鍵點擊頁面跳轉(zhuǎn)
其中,最讓糾結(jié)的就是實現(xiàn)左鍵點擊頁面跳轉(zhuǎn)了。
在chrome瀏覽器上,有些頁面,左鍵點擊,會直接創(chuàng)建一個新的tab來呈現(xiàn)網(wǎng)頁。
在使用QWebEngineView時,如果不做特殊處理,這樣的左鍵點擊,是根本沒有反應(yīng)的。
那怎么辦?就需要重寫QWebEngineView的createWindow方法。
說明3:關(guān)于createWindow方法重寫
在重寫QWebEngineView的createWindow方法時,又有兩種寫法。
第一種,是直接在本窗口新建tab的方式。 (不推薦使用這種方式)
注:這種方式有個問題,因為新建的tab覆蓋了原來的tab,所以,原來tab的所有信息都找不到了,如瀏覽,賬號,密碼等。
class WebEngineView(QWebEngineView):
# 重寫createwindow()
def createWindow(self, QWebEnginePage_WebWindowType):
return self
第二種,就是新建窗口的方式了。代碼如下。(推薦使用這種方式)
【如下代碼,完全復(fù)制,直接運行,即可使用】
import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtWebEngineWidgets import QWebEngineView
################################################
#######創(chuàng)建主窗口
################################################
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("https://www.baidu.com"))
self.setCentralWidget(self.webview)
################################################
#######創(chuàng)建瀏覽器
################################################
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_())
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
用實例詳解Python中的Django框架中prefetch_related()函數(shù)對數(shù)據(jù)庫查詢的優(yōu)化
這篇文章主要介紹了用實例詳解Python中的Django框架中prefetch_related()函數(shù)對數(shù)據(jù)庫查詢的優(yōu)化,可減少對數(shù)據(jù)庫的查詢次數(shù)從而優(yōu)化性能,需要的朋友可以參考下2015-04-04
Python用HBuilder創(chuàng)建交流社區(qū)APP
這篇文章主要講解Python使用HBuilder創(chuàng)建交流社區(qū)APP,使用HBuilder做一個簡單的社區(qū)瀏覽界面,下面文章附有詳細的代碼,需要的朋友可以參考一下2021-11-11
django為Form生成的label標(biāo)簽添加class方式
這篇文章主要介紹了django為Form生成的label標(biāo)簽添加class方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-05-05
Python中RSA加解密與數(shù)字簽名技術(shù)的使用
本文將詳細介紹 RSA 數(shù)字簽名的原理、實現(xiàn)步驟,以及如何通過 Python 的 rsa 庫完成公鑰私鑰生成、數(shù)字簽名和認(rèn)證,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2025-03-03

