时间:2021-05-22
前言
看到某60的网速悬浮球有点心动,但是又不想装这个流氓软件,就自己用python加PyQt5自制了一个,实测还行,关键不占用电脑一点资源,已将软件打包,可自行下载使用。
预览
观看直播时实时网速。
文件结构
运行管理
开始运行时内存消耗18.3m,cpu,磁盘,网络不占用。
运行一天后内存稳定于6.4m,cpu,磁盘,网络不占用。
整体思路
代码清单
网速获取&&格式化
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("上传:%s\n下载:%s\n%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.QMessageBox msg_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 = 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 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 电脑端网速悬浮窗内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文实例为大家分享了Android实现触摸移动的悬浮窗的具体代码,供大家参考,具体内容如下1.触摸移动的悬浮窗的快速实现UI2.悬浮窗实现2.1悬浮窗权限为了偷
百度Hi如何关闭语音助手悬浮窗?在手机上很多软件里都会有个悬浮窗的功能,最近很多人都在问小编百度Hi语音助手悬浮窗怎么关闭?下面小编就教大家如何关闭语音助手悬浮
悬浮窗是电脑或智能手机的系统工具,在其他应用的表面悬浮一可移动的窗口,以便打开不同应用,手机使用悬浮窗需要系统授权。 悬浮窗,可以及时提醒内存占用较高状态,点
本文实例为大家分享了js实现悬浮窗的具体代码,供大家参考,具体内容如下说明:点击”+“按钮,悬浮窗收缩/展开思路1、在html中定义一个div块,定一个id;一
金山卫士悬浮窗怎么取消显示?使用金山卫士保护电脑,但是每次启动都会显示悬浮窗,而且都是显示在最前端,打扰工作,该怎么取消悬浮窗呢?下面我们一起来看看吧软件名称: