最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python使用Pyqt5實(shí)現(xiàn)簡(jiǎn)易瀏覽器(最新版本測(cè)試過(guò))

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

準(zhǔn)備環(huán)境

首先我們需要的是我們的開(kāi)發(fā)環(huán)境,我使用的是python 3.8.2和pyqt 5.14.2,因?yàn)橛袕?qiáng)迫癥,所以喜歡使用最新版的

安裝QtWebEngineWidgets

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

pip3 install QtWebEngineWidgets

多tab頁(yè)面

做這個(gè)的時(shí)候遇到好多坑,比如在多個(gè)tab里面打開(kāi)頁(yè)面,要使用這個(gè)QTabWidget,這個(gè)不用我們?cè)偃ハ螺d了,已經(jīng)集成了

頁(yè)面鏈接點(diǎn)擊無(wú)反應(yīng)

這個(gè)搞了我半天,我之前還一直以為是跨域的問(wèn)題,其實(shí)是這個(gè)機(jī)制的問(wèn)題,需要重寫(xiě)createWindow方法

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

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

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

然后大體就是一些頁(yè)面的布局,這個(gè)可以使用Qt Designer,可以自動(dòng)轉(zhuǎn)化成為我們的py代碼

然后就是一些前進(jìn),后退,刷新,停止的方法

整體代碼,可運(yùn)行

# -*- 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)
    # 設(shè)置窗口標(biāo)題
    self.setWindowTitle('簡(jiǎn)易瀏覽器')
    # 設(shè)置窗口大小900*600
    self.resize(1300, 700)
    self.show()

    # 創(chuàng)建tabwidget(多標(biāo)簽頁(yè)面)
    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)

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

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

    # QAction類(lèi)提供了抽象的用戶(hù)界面action,這些action可以被放置在窗口部件中
    # 添加前進(jìn)、后退、停止加載和刷新的按鈕
    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)

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

    # 添加URL地址欄
    self.urlbar = QLineEdit()
    # 讓地址欄能響應(yīng)回車(chē)按鍵信號(hào)
    self.urlbar.returnPressed.connect(self.navigate_to_url)

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

    # 讓瀏覽器相應(yīng)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)

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

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

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

  # 關(guān)閉tab頁(yè)面
  def close_Tab(self, index):
    if self.tabWidget.count() > 1:
      self.tabWidget.removeTab(index)
    else:
      self.close() # 當(dāng)只有1個(gè)tab時(shí),關(guān)閉主窗口


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

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

  # 重寫(xiě)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()
  # 運(yùn)行應(yīng)用,并監(jiān)聽(tīng)事件
  sys.exit(app.exec_())

結(jié)果

可以去點(diǎn)擊地址去嘗試

代碼下載

圖標(biāo)什么的可以在阿里巴巴矢量圖標(biāo)庫(kù)里面去找到

貼一下github地址

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

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

相關(guān)文章

  • 一篇文章徹底弄懂Python字符編碼

    一篇文章徹底弄懂Python字符編碼

    這篇文章主要介紹了一篇文章徹底弄懂Python字符編碼,各種常用的字符編碼的特點(diǎn),并介紹了在python2.x中如何與編碼問(wèn)題作戰(zhàn)?,下文詳細(xì)介紹需要的小伙伴可以參考一下
    2022-03-03
  • python實(shí)現(xiàn)五子棋小程序

    python實(shí)現(xiàn)五子棋小程序

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)五子棋小程序,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • Python爬蟲(chóng)實(shí)現(xiàn)(偽)球迷速成

    Python爬蟲(chóng)實(shí)現(xiàn)(偽)球迷速成

    還有4天就世界杯了,作為一個(gè)資深(偽)球迷,必須要實(shí)時(shí)關(guān)注世界杯相關(guān)新聞,了解各個(gè)球隊(duì)動(dòng)態(tài),下面小編給大家?guī)?lái)了Python爬蟲(chóng)實(shí)現(xiàn)(偽)球迷速成功能,一起看看吧
    2018-06-06
  • Python中的Joblib庫(kù)使用學(xué)習(xí)總結(jié)

    Python中的Joblib庫(kù)使用學(xué)習(xí)總結(jié)

    這篇文章主要介紹了Python中的Joblib庫(kù)使用學(xué)習(xí)總結(jié),Joblib是一組在Python中提供輕量級(jí)流水線的工具,Joblib已被優(yōu)化得很快速,很健壯了,特別是在大數(shù)據(jù)上,并對(duì)numpy數(shù)組進(jìn)行了特定的優(yōu)化,需要的朋友可以參考下
    2023-08-08
  • 在Python的Django框架中包裝視圖函數(shù)

    在Python的Django框架中包裝視圖函數(shù)

    這篇文章主要介紹了在Python的Django框架中包裝視圖函數(shù)的方法,即requires_login的相關(guān)方法,需要的朋友可以參考下
    2015-07-07
  • 從源碼解析Python的Flask框架中request對(duì)象的用法

    從源碼解析Python的Flask框架中request對(duì)象的用法

    Flask中的request對(duì)象發(fā)送請(qǐng)求使用起來(lái)十分方便,但也有一些需要注意的地方,這里我們來(lái)從源碼解析Python的Flask框架中request對(duì)象的用法,需要的朋友可以參考下.
    2016-06-06
  • python中異常捕獲方法詳解

    python中異常捕獲方法詳解

    異常信息的獲取對(duì)于程序的調(diào)試非常重要,可以有助于快速定位有錯(cuò)誤程序語(yǔ)句的位置。下面介紹幾種python中獲取異常信息的方法,希望小伙伴們能夠喜歡
    2017-03-03
  • Python第三方庫(kù)的幾種安裝方式(小結(jié))

    Python第三方庫(kù)的幾種安裝方式(小結(jié))

    這篇文章主要介紹了Python第三方庫(kù)的幾種安裝方式(小結(jié)),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Python四大金剛之元組詳解

    Python四大金剛之元組詳解

    這篇文章主要介紹了Python的元組,小編覺(jué)得這篇文章寫(xiě)的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-10-10
  • python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法

    python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法

    這篇文章主要為大家詳細(xì)介紹了python+opencv實(shí)現(xiàn)攝像頭調(diào)用的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06

最新評(píng)論

秀山| 海南省| 疏勒县| 和政县| 乐安县| 大方县| 泗洪县| 汾西县| 清原| 隆昌县| 湖南省| 高州市| 双峰县| 桐庐县| 日喀则市| 娱乐| 旬阳县| 昆山市| 泸定县| 青田县| 石门县| 竹溪县| 西畴县| 合肥市| 连云港市| 治县。| 井冈山市| 曲松县| 通渭县| 洛川县| 定西市| 建水县| 东辽县| 繁昌县| 澳门| 武陟县| 神池县| 永济市| 鄯善县| 盐源县| 体育|