pyqt5的QWebEngineView 使用模板的方法
說明1:關(guān)于QWebEngineView
pyqt5 已經(jīng)拋棄 QtWebKit和QtWebKitWidgets,而使用最新的QtWebEngineWidgets。
QtWebEngineWidgets,是基于chrome瀏覽器內(nèi)核引擎的。
說明2:關(guān)于左鍵點(diǎn)擊頁面跳轉(zhuǎn)
其中,最讓糾結(jié)的就是實(shí)現(xiàn)左鍵點(diǎn)擊頁面跳轉(zhuǎn)了。
在chrome瀏覽器上,有些頁面,左鍵點(diǎn)擊,會直接創(chuàng)建一個新的tab來呈現(xiàn)網(wǎng)頁。
在使用QWebEngineView時,如果不做特殊處理,這樣的左鍵點(diǎn)擊,是根本沒有反應(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ù)制,直接運(yùn)行,即可使用】
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)文章
哈工大自然語言處理工具箱之ltp在windows10下的安裝使用教程
這篇文章主要介紹了哈工大自然語言處理工具箱之ltp在windows10下的安裝使用教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05
Python入門教程(三十八)Python的NumPy庫簡介
這篇文章主要介紹了Python入門教程(三十八)Python的NumPy庫簡介,NumPy 是用于處理數(shù)組的 python 庫,它還擁有在線性代數(shù)、傅立葉變換和矩陣領(lǐng)域中工作的函數(shù),需要的朋友可以參考下2023-05-05
使用Matplotlib繪制不同顏色的帶箭頭的線實(shí)例
這篇文章主要介紹了使用Matplotlib繪制不同顏色的帶箭頭的線實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python實(shí)現(xiàn)對數(shù)坐標(biāo)系繪制與自定義映射
這篇文章主要為大家學(xué)習(xí)介紹了如何利用Python實(shí)現(xiàn)對數(shù)坐標(biāo)系繪制與坐標(biāo)自定義映射,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-08-08
python+PyQT實(shí)現(xiàn)系統(tǒng)桌面時鐘
這篇文章主要為大家詳細(xì)介紹了python+PyQT實(shí)現(xiàn)系統(tǒng)桌面時鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11

