色综合图-色综合图片-色综合图片二区150p-色综合图区-玖玖国产精品视频-玖玖香蕉视频

您的位置:首頁技術文章
文章詳情頁

python百行代碼自制電腦端網速懸浮窗的實現

瀏覽:72日期:2022-07-25 17:45:41

前言

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

預覽

觀看直播時實時網速。

python百行代碼自制電腦端網速懸浮窗的實現

文件結構

python百行代碼自制電腦端網速懸浮窗的實現

運行管理

開始運行時內存消耗18.3m,cpu,磁盤,網絡不占用。

python百行代碼自制電腦端網速懸浮窗的實現

運行一天后內存穩定于6.4m,cpu,磁盤,網絡不占用。

python百行代碼自制電腦端網速懸浮窗的實現

整體思路

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

代碼清單

網速獲取&&格式化

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() # 獲取流量統計信息 recv_bytes = net_info.bytes_recv sent_bytes = net_info.bytes_sent old[0] += recv_bytes old[1] += sent_bytes time.sleep(1) # 當前所收集的數據 net_info = net_io_counters() # 獲取流量統計信息 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 = '監控電腦網絡的上傳跟下載網速。n統計網絡使用總流量!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) # 設置窗口背景透明 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()

邏輯函數

def start(self): Thread(target=self.setSpeed, daemon=True).start() def setSpeed(self): info = get_data() recv_bytes = gsh(info[0]) # 每秒接收的字節 sent_bytes = gsh(info[1]) # 每秒發送的字節 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('上傳:%sn下載:%sn%s'%(sent_bytes,recv_bytes,strs)

鼠標事件

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('關于程序') 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.QMessageBoxmsg_box.question(self, '關于', 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 = Falseself._startPos = Noneself._endPos = None if e.button() == Qt.RightButton:self._isTracking = Falseself._startPos = Noneself._endPos = None

# -*- coding: utf-8 -*-import timeimport webbrowserfrom PyQt5.QtCore import QSize, QPoint, Qtfrom PyQt5.QtGui import QMouseEvent, QMovie, QCursorfrom PyQt5.QtWidgets import QWidget, QMessageBox, QApplication, QMenu, qAppfrom psutil import net_io_counters #net_io_counters 網絡輸入與輸出 如果需要獲取單個網卡的io信息,加上pernic=True參數。from threading import Threadimport sysfrom qtpy import QtWidgets, QtCore

運行

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

到此這篇關于python百行代碼自制電腦端網速懸浮窗的實現的文章就介紹到這了,更多相關python 電腦端網速懸浮窗內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 鸥美性生交xxxxx久久久 | 色老头一级毛片 | 欧美日韩一区二区在线 | 久久亚洲国产精品五月天 | 大桥未久在线精品视频在线 | 91久久精品国产91性色tv | 亚洲一区二区中文字幕 | 特黄特色三级在线观看 | 成年女人看片免费视频播放器 | 在线播放免费一级毛片欧美 | 在线观看人成网站深夜免费 | 欧美性狂猛bbbbbbxxxxxx | 亚洲一级特黄特黄的大片 | 在线日本看片免费人成视久网 | 精品国产午夜久久久久九九 | 看欧美毛片一级毛片 | 玖草 | 欧美成人综合在线 | 国产一区二区三区毛片 | 94欧美setu | 免费一级毛片在线播放放视频 | 欧美成人在线观看 | 黄色国产网站 | 亚洲精品在线播放 | a在线观看欧美在线观看 | 欧美一区二区在线观看 | 欧美成人国产一区二区 | 日本vs欧美一区二区三区 | 欧美日韩国产一区二区三区在线观看 | 亚洲午夜在线 | 一级做a免费视频观看网站 一级做a爰 | 国产精品毛片在线更新 | 久久久久久网站 | 欧美成人在线视频 | 香港三级日本三级三级人妇 | 国产老鸭窝毛片一区二区 | 成人中文字幕一区二区三区 | 精品亚洲成a人片在线观看 精品亚洲成a人在线播放 | 日本成人在线看 | 欧美另类亚洲一区二区 | 国产精品视频免费一区二区三区 |