天天看點

pyqt5從子目錄加載qrc檔案_實戰PyQt5: 133-定制你的專屬浏覽器QWebEngineView簡單的浏覽器本文知識點

pyqt5從子目錄加載qrc檔案_實戰PyQt5: 133-定制你的專屬浏覽器QWebEngineView簡單的浏覽器本文知識點

在PyQt5中,可以使用PyQtWebEngine子產品快速定制專屬浏覽器,預設的PyQt5包中并不包含這個子產品,請使用指令:

pip install PyQtWebEngine           

安裝這個子產品。

QWebEngineView

QWebEngineView類提供了一個用于檢視和編輯Web文檔部件,web view是Qt WebEngine網頁浏覽子產品的主要部件的元件。可以在各種應用程式中使用它來實時顯示Internet上的Web内容。

和其他Qt部件一樣,必須show()函數才可以顯示Web視圖,簡單的示例代碼如下:

webView = QWebEegineView(self)view.load(QUrl('http://qt-project.org/'))view.show()           

QWebEegineView 常用函數:

  • load(self, url): 加載指定的url并顯示。
  • setHtml(self, html, baseUrl): 将網頁視圖的内容設定為指定的HTML内容。
  • history(self): 傳回指向導航網頁視圖曆史的對象。
  • icon(self): 獲得與目前檢視的頁面關聯的圖示。
  • iconUrl(self): 獲得此屬性儲存與目前檢視的頁面關聯的圖示的URL。
  • page(self): 傳回指向基礎網頁的對象。
  • pageAction(self, action):傳回指向QAction的對象,該對象封裝了指定的Web操作action。
  • selectedText(self):獲得目前標明的文本。。
  • setPage(self, page): 使page成為Web視圖的新網頁。
  • setUrl(self, url): 設定目前檢視的網頁的URL。
  • setZoomFactor(self, factor): 設定視圖的縮放因子,有效值是從範圍内的0.25到5.0。預設因子是1.0。
  • settings(self): 傳回指向視圖或頁面特定設定對象。
  • title(self): 獲得HTML元素定義的頁面标題。
  • triggerPageAction(self, action, checked):觸發指定的action。如果這是可檢查的操作,則假定為指定的checked狀态。
  • url(self):獲得目前檢視的網頁的URL。
  • zoomFactor(self): 傳回視圖的縮放因子。
  • back(self): 用于通過導航連結建構的文檔清單中的上一個文檔。如果沒有以前的文檔,則不執行任何操作。
  • forward(self): 用于通過導航連結建構的文檔清單中的下一個文檔。如果沒有下一個文檔,則不執行任何操作。
  • reload(self): 重新加載目前文檔。
  • stop(self): 停止加載文檔。

QWebEegineView 常用信号:

  • iconChanged(self, icon): 當與視圖關聯的圖示(“收藏夾”)更改時,将發出此信号。新圖示由icon指定。
  • iconUrlChanged(self, url): 當與視圖關聯的圖示(“圖示”)的URL更改時,将發出此信号。新URL由url指定。
  • loadFinished(self, ok): 頁面加載完成後發出此信号。ok将訓示加載成功還是發生錯誤。
  • loadProgress(self, progress): 每當Web視圖中的某個元素完成加載(例如嵌入式圖像或腳本)時,都會發出此信号。是以,它跟蹤加載Web視圖的總體進度。目前值由progress提供,範圍為0到100,這是QProgressBar的預設範圍。
  • loadStarted(self): 當頁面開始新的加載時,将發出此信号。
  • renderProcessTerminted(self, terminationStatus,exitCode): 當渲染過程以非零退出狀态終止時,将發出此信号。terminationStatus是程序的終止狀态,而exitCode是程序終止的狀态代碼。
  • selectionChanged(self): 選擇更改時,将發出此信号。
  • titleChanaged(self, title): 每當視圖示題更改時,都會發出此信号。
  • urlChanged(self, url): 視圖的URL更改時,将發出此信号。

簡單的浏覽器

代碼示範如何定制一個簡單的浏覽器,備注(QWebEngine 子產品的核心使用的Chorme, 測試程式在win10下運作正常,在Ubutun下需要加開關 --no-sandbox)。完整代碼如下:

資源檔案:resource.qrc

    images/back.png    images/next.png    images/close.png    images/reload.png           

代碼檔案:

import sysfrom PyQt5.QtCore import Qt, QUrl, QSizefrom PyQt5.QtGui import QIconfrom PyQt5.QtWidgets import (QApplication, QMainWindow, QLineEdit,                             QMenuBar, QToolBar, QMenu, QAction)from PyQt5.QtWebEngineWidgets import QWebEngineView, QWebEngineSettings import resource_rc default_url = 'https://www.toutiao.com/i6856673250190033415/' class WebEngineView(QWebEngineView):    windowList = [] class DemoBrowser(QMainWindow):    def __init__(self, parent=None):        super(DemoBrowser, self).__init__(parent)                    # 設定視窗标題        self.setWindowTitle('實戰Qt for Python: QWeEngineView示範')              # 設定視窗大小        self.resize(640, 480)                webSettings = QWebEngineSettings.globalSettings()        webSettings.setAttribute(QWebEngineSettings.JavascriptEnabled, True)        webSettings.setAttribute(QWebEngineSettings.PluginsEnabled, True)        webSettings.setAttribute(QWebEngineSettings.JavascriptCanOpenWindows, True)                self.browser = QWebEngineView(self)        self.setCentralWidget(self.browser)              self.initBar()                self.browser.load(QUrl(default_url))        def initBar(self):        #菜單條        menuBar = self.menuBar()         menuFile = menuBar.addMenu('檔案(&F)')                actionExit = QAction('退出(&X)', self)        actionExit.triggered.connect(QApplication.instance().quit)        menuFile.addAction(actionExit)                  #浏覽器工具條        navBar = QToolBar('Navigation')        navBar.setIconSize(QSize(16, 16))        self.addToolBar(navBar)                self.editUrl = QLineEdit()        #位址欄能響應回車按鍵信号        self.editUrl.returnPressed.connect(self.navigateToUrl)                navBar.addAction(QAction(QIcon(':/images/back.png'), 'Back', self, triggered=self.browser.back))        navBar.addAction(QAction(QIcon(':/images/next.png'), 'Forward', self, triggered=self.browser.forward))        navBar.addAction(QAction(QIcon(':/images/close.png'), 'Stop', self, triggered=self.browser.stop))        navBar.addAction(QAction(QIcon(':/images/reload.png'), 'Reload', self, triggered=self.browser.reload))        navBar.addSeparator()        navBar.addWidget(self.editUrl)                #浏覽器相應url位址的變化        self.browser.urlChanged.connect(self.renewUrl)            def navigateToUrl(self):        url = QUrl(self.editUrl.text())        if url.scheme() == '':            url.setScheme('http')        self.browser.setUrl(url)            def renewUrl(self, url):        # 将目前網頁的連結更新到位址欄        self.editUrl.setText(url.toString())        self.editUrl.setCursorPosition(0)                  if __name__ == '__main__':    app = QApplication(sys.argv)    window = DemoBrowser()    window.show()    sys.exit(app.exec())              

運作效果如下圖:

pyqt5從子目錄加載qrc檔案_實戰PyQt5: 133-定制你的專屬浏覽器QWebEngineView簡單的浏覽器本文知識點

使用QWebEngineView實作一個簡單的浏覽器

本文知識點

  • QWebEngine子產品不包含在PyQt5預設包中,需要單獨安裝。
  • QWebEngine子產品使用Chrome核心。
  • 如何建構一個簡單的浏覽器。

前一篇: 實戰PyQt5: 132-一個輕量級的地圖應用

請多多關注,評論,收藏,點贊,和轉發。

繼續閱讀