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

python百行代碼自制電腦端網(wǎng)速懸浮窗的實現(xiàn)

 更新時間:2020年05月12日 10:03:37   作者:旋凱凱旋  
這篇文章主要介紹了python百行代碼自制電腦端網(wǎng)速懸浮窗的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

看到某60的網(wǎng)速懸浮球有點心動,但是又不想裝這個流氓軟件,就自己用python加PyQt5自制了一個,實測還行,關(guān)鍵不占用電腦一點資源,已將軟件打包,可自行下載使用。

預(yù)覽

觀看直播時實時網(wǎng)速。

文件結(jié)構(gòu)

運行管理

開始運行時內(nèi)存消耗18.3m,cpu,磁盤,網(wǎng)絡(luò)不占用。


運行一天后內(nèi)存穩(wěn)定于6.4m,cpu,磁盤,網(wǎng)絡(luò)不占用。

整體思路

  • 使用psuti.net_io_counters 監(jiān)控電腦網(wǎng)卡IO
  • 將流量數(shù)據(jù)格式化,統(tǒng)計每次數(shù)據(jù)總和保存在本地《流量使用情況.txt》(這個是個缺陷,我只用txt保存,用戶可以隨意更改,后期完善一下加密保存,隱藏文件信息。)
  • PyQt窗口制作,兩個label,一個網(wǎng)速信息,一個動態(tài)圖展示,隱藏窗口標(biāo)題欄,任務(wù)欄,窗口全屏幕隨意移動,鼠標(biāo)放到窗口樣式變?yōu)樽ナ?,鼠?biāo)右鍵菜單欄,退出程序,軟件關(guān)于。
  • 退出程序時保存流量總和信息到文件,下次啟動先讀取流量總和數(shù)據(jù)。

代碼清單

網(wǎng)速獲取&&格式化

def gsh(count):
  if count < 1024:
    return "%.2f B/s" % count
  if count < 1048576:
    return "%.2f KB/s" % (count / 1024)
  count >>= 10
  if count < 1048576:
    return "%.2f MB/s" % (count / 1024)
  count >>= 10
  return "%.2f GB/s" % (count / 1024)

def get_data():
  old = [0, 0]
  new = [0, 0]
  net_info = net_io_counters() # 獲取流量統(tǒng)計信息
  recv_bytes = net_info.bytes_recv
  sent_bytes = net_info.bytes_sent
  old[0] += recv_bytes
  old[1] += sent_bytes
  time.sleep(1)

  # 當(dāng)前所收集的數(shù)據(jù)
  net_info = net_io_counters() # 獲取流量統(tǒng)計信息
  recv_bytes = net_info.bytes_recv
  sent_bytes = net_info.bytes_sent
  new[0] += recv_bytes
  new[1] += sent_bytes
  info = []
  for i in range(2):
    info.append(new[i] - old[i])
  return info

窗口界面

class Main(QWidget):
  _startPos = None
  _endPos = None
  _isTracking = False
  all_bytes=0
  about = "監(jiān)控電腦網(wǎng)絡(luò)的上傳跟下載網(wǎng)速。\n統(tǒng)計網(wǎng)絡(luò)使用總流量!\n作者:旋凱凱旋"

  def __init__(self):
    super().__init__()
    self._initUI()
    with open('流量使用情況.txt', 'r') as f:
      self.all_bytes = int(f.read())

  def _initUI(self):
    self.setFixedSize(QSize(259, 270))
    self.setWindowFlags(Qt.FramelessWindowHint | QtCore.Qt.WindowStaysOnTopHint | Qt.Tool) 

    self.setAttribute(QtCore.Qt.WA_TranslucentBackground) # 設(shè)置窗口背景透明

    self.label = QtWidgets.QLabel(self)
    self.label.setGeometry(QtCore.QRect(0, 0, 259, 111))
    self.label.setMinimumSize(QtCore.QSize(259, 111))
    self.label.setBaseSize(QtCore.QSize(259, 111))
    self.label.setStyleSheet("font: 75 20pt \"Adobe Arabic\";color:rgb(255,0,0)")
    self.label.setAlignment(QtCore.Qt.AlignCenter)
    self.label.setObjectName("label")

    self.label2 = QtWidgets.QLabel(self)
    self.label2.setGeometry(QtCore.QRect(10, 110, 259, 161))
    self.label2.setMinimumSize(QtCore.QSize(259, 161))
    self.label2.setBaseSize(QtCore.QSize(259, 161))
    self.label2.setAlignment(QtCore.Qt.AlignCenter)
    self.gif = QMovie('1271.gif')
    self.label2.setMovie(self.gif)
    self.label2.setObjectName("label2")
    self.gif.start()

    self.timer = QtCore.QTimer(self)
    self.timer.start(1000)
    self.timer.timeout.connect(self.start)

    self.setCursor(QCursor(Qt.PointingHandCursor))

    self.show()

邏輯函數(shù)

def start(self):
    Thread(target=self.setSpeed, daemon=True).start()

  def setSpeed(self):
    info = get_data()
    recv_bytes = gsh(info[0]) # 每秒接收的字節(jié)
    sent_bytes = gsh(info[1]) # 每秒發(fā)送的字節(jié)
    self.all_bytes += sum(info)
    if self.all_bytes<1073741824:
      all_bytes = self.all_bytes / 1048576
      strs="已使用:%.2f Mb"%all_bytes
    else:
      all_bytes = self.all_bytes / 1073741824
      strs = "已使用:%.2f Gb" % all_bytes
    self.label.setText("上傳:%s\n下載:%s\n%s"%(sent_bytes,recv_bytes,strs)

鼠標(biāo)事件

 def mouseMoveEvent(self, e: QMouseEvent): # 重寫移動事件
    self._endPos = e.pos() - self._startPos
    self.move(self.pos() + self._endPos)

  def mousePressEvent(self, e: QMouseEvent):
    if e.button() == Qt.LeftButton:
      self._isTracking = True
      self._startPos = QPoint(e.x(), e.y())

    if e.button() == Qt.RightButton:
      menu = QMenu(self)
      quitAction = menu.addAction("退出程序")
      aboutAction=menu.addAction("關(guān)于程序")
      action = menu.exec_(self.mapToGlobal(e.pos()))
      if action == quitAction:
        with open('流量使用情況.txt', 'w') as f:
          f.write(str(self.all_bytes))
        qApp.quit()
      if action == aboutAction:
        msg_box = QtWidgets.QMessageBox
        msg_box.question(self, "關(guān)于", self.about,msg_box.Yes | msg_box.Cancel)
        if QMessageBox.Yes:
          webbrowser.open('https://me.csdn.net/Cxk___', new=0, autoraise=True)
          

  def mouseReleaseEvent(self, e: QMouseEvent):
      if e.button() == Qt.LeftButton:
        self._isTracking = False
        self._startPos = None
        self._endPos = None
      if e.button() == Qt.RightButton:
        self._isTracking = False
        self._startPos = None
        self._endPos = None

# -*- coding: utf-8 -*-
import time
import webbrowser

from PyQt5.QtCore import QSize, QPoint, Qt
from PyQt5.QtGui import QMouseEvent, QMovie, QCursor
from PyQt5.QtWidgets import QWidget, QMessageBox, QApplication, QMenu, qApp
from psutil import net_io_counters #net_io_counters 網(wǎng)絡(luò)輸入與輸出 如果需要獲取單個網(wǎng)卡的io信息,加上pernic=True參數(shù)。
from threading import Thread
import sys
from qtpy import QtWidgets, QtCore

運行

if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = Main()
  sys.exit(app.exec_()

到此這篇關(guān)于python百行代碼自制電腦端網(wǎng)速懸浮窗的實現(xiàn)的文章就介紹到這了,更多相關(guān)python 電腦端網(wǎng)速懸浮窗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實現(xiàn)壓縮與解壓gzip大文件的方法

    Python實現(xiàn)壓縮與解壓gzip大文件的方法

    這篇文章主要介紹了Python實現(xiàn)壓縮與解壓gzip大文件的方法,分析了Python針對壓縮成gzip文件及解壓gzip文件的方法,并給出了相應(yīng)的封裝類,需要的朋友可以參考下
    2016-09-09
  • Python運行錯誤異常代碼含義對照表

    Python運行錯誤異常代碼含義對照表

    這篇文章主要介紹了Python運行錯誤異常代碼含義對照表,需要的朋友可以參考下
    2021-04-04
  • Python?Paramiko上傳下載sftp文件及遠程執(zhí)行命令詳解

    Python?Paramiko上傳下載sftp文件及遠程執(zhí)行命令詳解

    這篇文章主要為大家介紹了Python?Paramiko上傳下載sftp文件及遠程執(zhí)行命令示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-07-07
  • 詳解Python中的四種隊列

    詳解Python中的四種隊列

    隊列是一種只允許在一端進行插入操作,而在另一端進行刪除操作的線性表。這篇文章主要介紹了Python中的四種隊列,需要的朋友可以參考下
    2018-05-05
  • 一篇超級全面的Python功能圖譜(推薦)

    一篇超級全面的Python功能圖譜(推薦)

    Python作為一種廣受歡迎的高級編程語言,不僅在基本語法上易于學(xué)習(xí),還擁有強大的標(biāo)準(zhǔn)庫和活躍的開發(fā)社區(qū),本文詳細介紹了Python從基礎(chǔ)語法到高級應(yīng)用的全面功能,并通過實際案例和代碼示例展示了其在科學(xué)計算、Web開發(fā)、機器學(xué)習(xí)等多個領(lǐng)域的應(yīng)用,需要的朋友可以參考下
    2024-09-09
  • python字符串替換re.sub()實例解析

    python字符串替換re.sub()實例解析

    這篇文章主要介紹了python字符串替換re.sub()實例解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-02-02
  • Python基于列表模擬堆棧和隊列功能示例

    Python基于列表模擬堆棧和隊列功能示例

    這篇文章主要介紹了Python基于列表模擬堆棧和隊列功能,簡單描述了隊列與堆棧的特點,并結(jié)合列表相關(guān)函數(shù)分析了隊列的出隊、進隊及堆棧的出棧、入棧等操作實現(xiàn)技巧,需要的朋友可以參考下
    2018-01-01
  • Python利用psutil獲取CPU與內(nèi)存等硬件信息

    Python利用psutil獲取CPU與內(nèi)存等硬件信息

    psutil是Python的一個第三方庫,提供了各種強大的硬件信息查閱功能,這篇文章主要為大家介紹了如何利用psutil獲取CPU與內(nèi)存等硬件信息,需要的可以參考一下
    2023-07-07
  • Python機器學(xué)習(xí)入門(一)序章

    Python機器學(xué)習(xí)入門(一)序章

    這篇文章主要介紹了Python機器學(xué)習(xí)入門知識,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-08-08
  • Django實現(xiàn)文件上傳下載

    Django實現(xiàn)文件上傳下載

    這篇文章主要為大家詳細介紹了Django實現(xiàn)文件上傳下載,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-10-10

最新評論