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)文章
哈工大自然語言處理工具箱之ltp在windows10下的安裝使用教程
這篇文章主要介紹了哈工大自然語言處理工具箱之ltp在windows10下的安裝使用教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-05-05Python入門教程(三十八)Python的NumPy庫簡介
這篇文章主要介紹了Python入門教程(三十八)Python的NumPy庫簡介,NumPy 是用于處理數(shù)組的 python 庫,它還擁有在線性代數(shù)、傅立葉變換和矩陣領(lǐng)域中工作的函數(shù),需要的朋友可以參考下2023-05-05Python實現(xiàn)對數(shù)坐標(biāo)系繪制與自定義映射
這篇文章主要為大家學(xué)習(xí)介紹了如何利用Python實現(xiàn)對數(shù)坐標(biāo)系繪制與坐標(biāo)自定義映射,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下2023-08-08python+PyQT實現(xiàn)系統(tǒng)桌面時鐘
這篇文章主要為大家詳細(xì)介紹了python+PyQT實現(xiàn)系統(tǒng)桌面時鐘,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-11-11