jwzyjwzy 发表于 2022-11-16 18:28

网络速度显示小插件

本帖最后由 jwzyjwzy 于 2022-11-17 12:22 编辑

今天逛论坛发现一篇挺实用的帖子@sgbyg python_tk写的网速监控 - 『编程语言区』 - 吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn
不知道是不是因为Linux系统的缘故apt-get install python3-tk安装tk后运行提示
ImportError: No module named '_tkinter'
我就用改成qt框架稍微弄了一下
#!/usr/bin/python
from PyQt5.QtWidgets import QApplication, QWidget, QLCDNumber, QDesktopWidget, QVBoxLayout,QLabel
from PyQt5.QtGui import *
from PyQt5.QtCore import *
import time
import sys
import psutil

class Speed(QWidget):
    def __init__(self):
      super(Speed, self).__init__()
      self.initUI()
      self.worker = MyWorker()
      self.worker.timeout.connect(self.upgradeProgress)
      self.worker.start()

    def initUI(self):
      self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
      self.setAttribute(Qt.WA_TranslucentBackground)
      self.resize(160, 70)
      self.up = QLabel(self)
      self.up.setGeometry(5, 5, 160, 20)
      self.down = QLabel(self)
      self.down.setGeometry(5, 28, 160, 20)
      #设置文字颜色
      #单独设置
      self.up.setStyleSheet("color:#e1b16a")
      self.down.setStyleSheet("color:#ce4a57")

      ##统一设置(按照css语法在此设置字体,颜色,大小)
      self.setStyleSheet("QLabel{font-size:20px;font-weight:bold}")

      #设置字体
      self.show()
   
    def upgradeProgress(self,a):
      if(a/1024.0<0.88):
            self.up.setText("上传 "+str(a)[:5]+"Kb/s")
      else:
            self.up.setText("上传 "+str(a/1024.0)[:5]+"Mb/s")
      if(a/1024.0<0.88):
            self.down.setText("下载 "+str(a)[:5]+"Kb/s")
      else:
            self.down.setText("下载 "+str(a/1024.0)[:5]+"Mb/s")

    def mousePressEvent(self, event):
      if event.button()==Qt.LeftButton:
            self.m_flag=True
            self.m_Position=event.globalPos()-self.pos()
            event.accept()
            self.setCursor(QCursor(Qt.OpenHandCursor))

    def mouseMoveEvent(self, QMouseEvent):
      if Qt.LeftButton and self.m_flag:
            self.move(QMouseEvent.globalPos()-self.m_Position)
            QMouseEvent.accept()
    def mouseReleaseEvent(self, QMouseEvent):
      self.m_flag=False
      self.setCursor(QCursor(Qt.ArrowCursor))   

class MyWorker(QThread):
    timeout = pyqtSignal(list)

    def __init__(self):
      super(MyWorker, self).__init__()
      self.a=[]

    def run(self):
      while True:
            self.a=[]
            self.s=(psutil.net_io_counters())
            self.r=(psutil.net_io_counters())
            self.sleep(1)
            self.a.append((psutil.net_io_counters() - self.s) / 1024.0)
            self.a.append((psutil.net_io_counters() - self.r) / 1024.0)
            self.timeout.emit(self.a)
            

if __name__ == '__main__':
    app = QApplication(sys.argv)
    m_time = Speed()
    m_time.show()
    sys.exit(app.exec_())
可以拖动,可以正常显示Mb/s
2022年11月17日 修复了卡顿,突然跳几千Mb/s,等Bug

悠扬Le逍遥 发表于 2022-11-16 18:38

本帖最后由 悠扬Le逍遥 于 2022-11-17 10:47 编辑

火绒自带功能
设置-常规设置-基础设置-显示流量悬浮窗
或右击托盘火绒图标--流量悬浮窗

jwzyjwzy 发表于 2022-11-20 17:47

muchenxi 发表于 2022-11-19 13:18
为什么我运行出来只有上传和下载的数据显示,而且不能拖动

你发的图片好像挂了我看不见,如果显示不完整可以尝试调小字号或者修改gui窗口的大小,Windows下确实不好拖动这个是qt的锅对,准文字就可以拖动,建议在Windows下点击“Kb/s”那里比较好拖动

C斯咚喃 发表于 2022-11-16 18:35

这个图片中任务栏怎么在顶部呢,还是说这是浏览器的顶部?网速显示在哪里呢

jwzyjwzy 发表于 2022-11-16 18:35

本帖最后由 jwzyjwzy 于 2022-11-16 18:37 编辑

C斯咚喃 发表于 2022-11-16 18:35
这个图片中任务栏怎么在顶部呢,还是说这是浏览器的顶部?网速显示在哪里呢在右侧,亲

乌雷豹 发表于 2022-11-16 18:40

学习下,多谢分享

DSugar 发表于 2022-11-16 18:43

z支持,看着不错的。

jwzyjwzy 发表于 2022-11-16 18:43

悠扬Le逍遥 发表于 2022-11-16 18:38
火绒自带功能
设置-常规设置-基础设置-显示流量悬浮窗

好像火绒没有linux版吧...

阿诺ヽ 发表于 2022-11-16 18:45

https://github.com/zhongyang219/TrafficMonitor

aag 发表于 2022-11-16 18:47

mb linux dl

jwzyjwzy 发表于 2022-11-16 18:48

阿诺ヽ 发表于 2022-11-16 18:45
https://github.com/zhongyang219/TrafficMonitor

你这个只适合windows而且我只想要个可视化的网速而已没有别的需求
页: [1] 2 3 4 5 6 7 8 9
查看完整版本: 网络速度显示小插件