欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python使用Pyqt5實現(xiàn)簡易瀏覽器(最新版本測試過)

 更新時間:2020年04月27日 09:10:50   作者:歸子莫  
這篇文章主要介紹了Python使用Pyqt5實現(xiàn)簡易瀏覽器(最新版本測試過),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

準備環(huán)境

首先我們需要的是我們的開發(fā)環(huán)境,我使用的是python 3.8.2和pyqt 5.14.2,因為有強迫癥,所以喜歡使用最新版的

安裝QtWebEngineWidgets

這是新版使用的web瀏覽器引擎,更加的貼近谷歌瀏覽器,好像是需要單獨安裝,我就是這樣的

pip3 install QtWebEngineWidgets

多tab頁面

做這個的時候遇到好多坑,比如在多個tab里面打開頁面,要使用這個QTabWidget,這個不用我們再去下載了,已經(jīng)集成了

頁面鏈接點擊無反應

這個搞了我半天,我之前還一直以為是跨域的問題,其實是這個機制的問題,需要重寫createWindow方法

# 創(chuàng)建瀏覽器,重寫重寫createwindow方法實現(xiàn)頁面連接的點擊跳轉
class WebEngineView(QWebEngineView):

  def __init__(self, mainwindow, parent=None):
    super(WebEngineView, self).__init__(parent)
    self.mainwindow = mainwindow

  # 重寫createwindow()
  def createWindow(self, QWebEnginePage_WebWindowType):
    new_webview = WebEngineView(self.mainwindow)
    self.mainwindow.create_tab(new_webview)
    return new_webview

然后大體就是一些頁面的布局,這個可以使用Qt Designer,可以自動轉化成為我們的py代碼

然后就是一些前進,后退,刷新,停止的方法

整體代碼,可運行

# -*- coding: utf-8 -*-
# @Author: dshj
# @Date : 2020/04/26

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
from PyQt5.QtWebEngineWidgets import QWebEngineView


# 創(chuàng)建主窗口
class MainWindow(QMainWindow):
  def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    # 設置窗口標題
    self.setWindowTitle('簡易瀏覽器')
    # 設置窗口大小900*600
    self.resize(1300, 700)
    self.show()

    # 創(chuàng)建tabwidget(多標簽頁面)
    self.tabWidget = QTabWidget()
    self.tabWidget.setTabShape(QTabWidget.Triangular)
    self.tabWidget.setDocumentMode(True)
    self.tabWidget.setMovable(True)
    self.tabWidget.setTabsClosable(True)
    self.tabWidget.tabCloseRequested.connect(self.close_Tab)
    self.setCentralWidget(self.tabWidget)

    # 第一個tab頁面
    self.webview = WebEngineView(self) # self必須要有,是將主窗口作為參數(shù),傳給瀏覽器
    self.webview.load(QUrl("http://www.baidu.com"))
    self.create_tab(self.webview)

    # 使用QToolBar創(chuàng)建導航欄,并使用QAction創(chuàng)建按鈕
    # 添加導航欄
    navigation_bar = QToolBar('Navigation')
    # 設定圖標的大小
    navigation_bar.setIconSize(QSize(16, 16))
    # 添加導航欄到窗口中
    self.addToolBar(navigation_bar)

    # QAction類提供了抽象的用戶界面action,這些action可以被放置在窗口部件中
    # 添加前進、后退、停止加載和刷新的按鈕
    back_button = QAction(QIcon('icons/houtui.png'), 'Back', self)
    next_button = QAction(QIcon('icons/qianjin.png'), 'Forward', self)
    stop_button = QAction(QIcon('icons/close.png'), 'stop', self)
    reload_button = QAction(QIcon('icons/shuaxin.png'), 'reload', self)

    # 綁定事件
    back_button.triggered.connect(self.webview.back)
    next_button.triggered.connect(self.webview.forward)
    stop_button.triggered.connect(self.webview.stop)
    reload_button.triggered.connect(self.webview.reload)

    # 將按鈕添加到導航欄上
    navigation_bar.addAction(back_button)
    navigation_bar.addAction(next_button)
    navigation_bar.addAction(stop_button)
    navigation_bar.addAction(reload_button)

    # 添加URL地址欄
    self.urlbar = QLineEdit()
    # 讓地址欄能響應回車按鍵信號
    self.urlbar.returnPressed.connect(self.navigate_to_url)

    navigation_bar.addSeparator()
    navigation_bar.addWidget(self.urlbar)

    # 讓瀏覽器相應url地址的變化
    self.webview.urlChanged.connect(self.renew_urlbar)

  # 顯示地址
  def navigate_to_url(self):
    q = QUrl(self.urlbar.text())
    if q.scheme() == '':
      q.setScheme('http')
    self.webview.setUrl(q)

  # 響應輸入的地址
  def renew_urlbar(self, q):
    # 將當前網(wǎng)頁的鏈接更新到地址欄
    self.urlbar.setText(q.toString())
    self.urlbar.setCursorPosition(0)

  # 創(chuàng)建tab頁面
  def create_tab(self, webview):
    self.tab = QWidget()
    self.tabWidget.addTab(self.tab, "新建頁面")
    self.tabWidget.setCurrentWidget(self.tab)

    # 渲染到頁面
    self.Layout = QHBoxLayout(self.tab)
    self.Layout.setContentsMargins(0, 0, 0, 0)
    self.Layout.addWidget(webview)

  # 關閉tab頁面
  def close_Tab(self, index):
    if self.tabWidget.count() > 1:
      self.tabWidget.removeTab(index)
    else:
      self.close() # 當只有1個tab時,關閉主窗口


# 創(chuàng)建瀏覽器,重寫重寫createwindow方法實現(xiàn)頁面連接的點擊跳轉
class WebEngineView(QWebEngineView):

  def __init__(self, mainwindow, parent=None):
    super(WebEngineView, self).__init__(parent)
    self.mainwindow = mainwindow

  # 重寫createwindow()
  def createWindow(self, QWebEnginePage_WebWindowType):
    new_webview = WebEngineView(self.mainwindow)
    self.mainwindow.create_tab(new_webview)
    return new_webview


# 程序入口
if __name__ == "__main__":
  app = QApplication(sys.argv)
  # 創(chuàng)建主窗口
  browser = MainWindow()
  browser.show()
  # 運行應用,并監(jiān)聽事件
  sys.exit(app.exec_())

結果

可以去點擊地址去嘗試

代碼下載

圖標什么的可以在阿里巴巴矢量圖標庫里面去找到

貼一下github地址

https://github.com/Tangleia/Python-tools-borwser

到此這篇關于Python使用Pyqt5實現(xiàn)簡易瀏覽器(最新版本測試過)的文章就介紹到這了,更多相關Python 簡易瀏覽器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • go和python變量賦值遇到的一個問題

    go和python變量賦值遇到的一個問題

    這篇文章主要介紹了go和python變量賦值遇到的一個問題的相關資料,需要的朋友可以參考下
    2017-08-08
  • Keras官方中文文檔:性能評估Metrices詳解

    Keras官方中文文檔:性能評估Metrices詳解

    這篇文章主要介紹了Keras官方中文文檔:性能評估Metrices詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • 用python求一重積分和二重積分的例子

    用python求一重積分和二重積分的例子

    今天小編就為大家分享一篇用python求一重積分和二重積分的例子,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-12-12
  • 教你用Type Hint提高Python程序開發(fā)效率

    教你用Type Hint提高Python程序開發(fā)效率

    本文通過介紹和實例教大家如何利用Type Hint來提升Python程序開發(fā)效率,對大家使用python開發(fā)很有幫助,有需要的參考學習。
    2016-08-08
  • 利用pyinstaller或virtualenv將python程序打包詳解

    利用pyinstaller或virtualenv將python程序打包詳解

    這篇文章主要給大家介紹了利用pyinstaller將python程序打包的相關資料,文中介紹的非常詳細,相信對大家具有一定的參考價值,需要的朋友們下面來一起看看吧。
    2017-03-03
  • keras之權重初始化方式

    keras之權重初始化方式

    這篇文章主要介紹了keras之權重初始化方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-05-05
  • 詳解numpy.meshgrid()方法使用

    詳解numpy.meshgrid()方法使用

    這篇文章主要介紹了詳解numpy.meshgrid()方法使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-08-08
  • Python秒算24點實現(xiàn)及原理詳解

    Python秒算24點實現(xiàn)及原理詳解

    這篇文章主要介紹了Python秒算24點,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-07-07
  • python實現(xiàn)通過pil模塊對圖片格式進行轉換的方法

    python實現(xiàn)通過pil模塊對圖片格式進行轉換的方法

    這篇文章主要介紹了python實現(xiàn)通過pil模塊對圖片格式進行轉換的方法,涉及Python中pil模塊的使用技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-03-03
  • python os模塊簡單應用示例

    python os模塊簡單應用示例

    這篇文章主要介紹了python os模塊簡單應用,結合實例形式分析了Python os模塊操作目錄與路徑相關函數(shù)與使用技巧,需要的朋友可以參考下
    2019-05-05

最新評論