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

Python PyQt5實(shí)戰(zhàn)項(xiàng)目之網(wǎng)速監(jiān)控器的實(shí)現(xiàn)

 更新時間:2021年11月09日 10:06:59   作者:不俠居  
PyQt5以一套Python模塊的形式來實(shí)現(xiàn)功能。它包含了超過620個類,600個方法和函數(shù)。它是一個多平臺的工具套件,它可以運(yùn)行在所有的主流操作系統(tǒng)中,包含Unix,Windows和Mac OS。PyQt5采用雙重許可模式。開發(fā)者可以在GPL和社區(qū)授權(quán)之間選擇

簡介

看到了一個能夠輕松實(shí)現(xiàn)獲取系統(tǒng)運(yùn)行的進(jìn)程和系統(tǒng)利用率(包括CPU、內(nèi)存、磁盤、網(wǎng)絡(luò)等)信息的模塊–psutil模塊。這次利用psutil.net_io_counters()這個方法。

psutil模塊使用

>>> psutil.net_io_counters() # 獲取網(wǎng)絡(luò)讀寫字節(jié)/包的個數(shù)

snetio(bytes_sent=16775953, bytes_recv=712657945, packets_sent=216741, packets_recv=485775, errin=0, errout=0, dropin=0, dropout=0)

bytes_sent:上傳數(shù)據(jù)
bytes_recv: 接收數(shù)據(jù)

主界面

class NetWindows(QMainWindow):
    net_signal = pyqtSignal(str,str)
    def __init__(self):
        super(NetWindows,self).__init__()
        self.ui_init()  
        self.thread_init()


    def ui_init(self):
        self.setWindowTitle('網(wǎng)速')
        self.resize(200,80)
        self.setWindowOpacity(0.9) # 設(shè)置窗口透明度
        self.setWindowFlag(Qt.FramelessWindowHint) # 隱藏邊框
        self.setWindowFlag(Qt.WindowStaysOnTopHint) # 窗口始終顯示在最前面
        self.upload_icon = QLabel()
        self.upload_icon.setPixmap(QPixmap(':res/upload.png'))
        self.upload_icon.setScaledContents(True)
        self.download_icon = QLabel()
        self.download_icon.setPixmap(QPixmap(':res/download.png'))
        self.download_icon.setScaledContents(True)
        self.upload_text = QLabel()
        self.upload_text.setText('upload: ')
        self.download_text = QLabel()
        self.download_text.setText('download: ')

        self.upload_lab = QLabel()
        self.download_lab = QLabel()

        self.g_layout = QGridLayout()
        self.g_layout.addWidget(self.upload_icon,0,0,1,1)
        self.g_layout.addWidget(self.download_icon,1,0,1,1)
        self.g_layout.addWidget(self.upload_text,0,1,1,1)
        self.g_layout.addWidget(self.download_text,1,1,1,1)
        self.g_layout.addWidget(self.upload_lab,0,2,1,4)
        self.g_layout.addWidget(self.download_lab,1,2,1,4)
        self.widget = QWidget()
        self.widget.setLayout(self.g_layout)
        self.setCentralWidget(self.widget)

    def thread_init(self):
        self.net_thread = NetThread()
        self.net_thread.net_signal.connect(self.net_slot)
        self.net_thread.start(1000)

    def variate_init(self):
        self.upload_content = ''
        self.download_content = ''

    def net_slot(self,upload_content,download_content):
        self.upload_lab.setText(upload_content)
        self.download_lab.setText(download_content)

    
    def mousePressEvent(self, event):
        '''
        重寫按下事件
        '''                             
        self.start_x = event.x()                        
        self.start_y = event.y()

    def mouseMoveEvent(self, event):
        '''
        重寫移動事件
        '''                              
        dis_x = event.x() - self.start_x
        dis_y = event.y() - self.start_y
        self.move(self.x()+dis_x, self.y()+dis_y)
  • mousePressEvent()

獲取鼠標(biāo)按下時的坐標(biāo)位置(相對于窗口左上角)

  • mouseMoveEvent()

當(dāng)鼠標(biāo)處于按下狀態(tài)并開始移動時,鼠標(biāo)離窗口左上角的位置會不斷更新并保存在event.x()和event.y()中。
我們將更新后的x和y值不斷減去鼠標(biāo)按下時的坐標(biāo)位置,就可以知道鼠標(biāo)移動的距離。最后再調(diào)用move方法將窗口當(dāng)前坐標(biāo)加上移動距離即可

網(wǎng)速線程

class NetThread(QThread):
    net_signal = pyqtSignal(str,str)
    def __init__(self):
        super(NetThread,self).__init__()

    def net_func(self):
        parameter = psutil.net_io_counters()
        recv1 = parameter[1] #接收數(shù)據(jù)
        send1 = parameter[0] #上傳數(shù)據(jù)
        time.sleep(1)  # 每隔1s監(jiān)聽端口接收數(shù)據(jù)
        parameter = psutil.net_io_counters()
        recv2 = parameter[1]
        send2 = parameter[0]
        self.upload_content = '{:.1f} kb/s.'.format((send2 - send1) / 1024.0)
        self.download_content = '{:.1f} kb/s.'.format((recv2 - recv1) / 1024.0)

    def run(self):
        while(1):
            self.net_func()
            self.net_signal.emit(self.upload_content,self.download_content)
            time.sleep(1)

全部代碼

import sys
import time
import psutil

from PyQt5.QtWidgets import QApplication, QHBoxLayout, QMainWindow, QWidget, QFrame, QLabel, QVBoxLayout, QGridLayout
from PyQt5.QtCore import Qt, pyqtSignal, QThread
from PyQt5.QtGui import QPixmap
import res

class NetWindows(QMainWindow):
    net_signal = pyqtSignal(str,str)
    def __init__(self):
        super(NetWindows,self).__init__()
        self.ui_init()  
        self.thread_init()


    def ui_init(self):
        self.setWindowTitle('網(wǎng)速')
        self.resize(200,80)
        self.setWindowOpacity(0.9) # 設(shè)置窗口透明度
        self.setWindowFlag(Qt.FramelessWindowHint) # 隱藏邊框
        self.setWindowFlag(Qt.WindowStaysOnTopHint) # 窗口始終顯示在最前面
        self.upload_icon = QLabel()
        self.upload_icon.setPixmap(QPixmap(':res/upload.png'))
        self.upload_icon.setScaledContents(True)
        self.download_icon = QLabel()
        self.download_icon.setPixmap(QPixmap(':res/download.png'))
        self.download_icon.setScaledContents(True)
        self.upload_text = QLabel()
        self.upload_text.setText('upload: ')
        self.download_text = QLabel()
        self.download_text.setText('download: ')

        self.upload_lab = QLabel()
        self.download_lab = QLabel()

        self.g_layout = QGridLayout()
        self.g_layout.addWidget(self.upload_icon,0,0,1,1)
        self.g_layout.addWidget(self.download_icon,1,0,1,1)
        self.g_layout.addWidget(self.upload_text,0,1,1,1)
        self.g_layout.addWidget(self.download_text,1,1,1,1)
        self.g_layout.addWidget(self.upload_lab,0,2,1,4)
        self.g_layout.addWidget(self.download_lab,1,2,1,4)
        self.widget = QWidget()
        self.widget.setLayout(self.g_layout)
        self.setCentralWidget(self.widget)

    def thread_init(self):
        self.net_thread = NetThread()
        self.net_thread.net_signal.connect(self.net_slot)
        self.net_thread.start(1000)

    def variate_init(self):
        self.upload_content = ''
        self.download_content = ''

    def net_slot(self,upload_content,download_content):
        self.upload_lab.setText(upload_content)
        self.download_lab.setText(download_content)

    
    def mousePressEvent(self, event):
        '''
        重寫按下事件
        '''                             
        self.start_x = event.x()                        
        self.start_y = event.y()

    def mouseMoveEvent(self, event):
        '''
        重寫移動事件
        '''                              
        dis_x = event.x() - self.start_x
        dis_y = event.y() - self.start_y
        self.move(self.x()+dis_x, self.y()+dis_y)

class NetThread(QThread):
    net_signal = pyqtSignal(str,str)
    def __init__(self):
        super(NetThread,self).__init__()

    def net_func(self):
        parameter = psutil.net_io_counters()
        recv1 = parameter[1] #接收數(shù)據(jù)
        send1 = parameter[0] #上傳數(shù)據(jù)
        time.sleep(1)  # 每隔1s監(jiān)聽端口接收數(shù)據(jù)
        parameter = psutil.net_io_counters()
        recv2 = parameter[1]
        send2 = parameter[0]
        self.upload_content = '{:.1f} kb/s.'.format((send2 - send1) / 1024.0)
        self.download_content = '{:.1f} kb/s.'.format((recv2 - recv1) / 1024.0)

    def run(self):
        while(1):
            self.net_func()
            self.net_signal.emit(self.upload_content,self.download_content)
            time.sleep(1)


if __name__ == '__main__':
    app = QApplication(sys.argv)
    dispaly = NetWindows()
    dispaly.show()
    netwidows = NetWindows()
    sys.exit(app.exec_())

成果展示

在這里插入圖片描述

在這里插入圖片描述

到此這篇關(guān)于Python PyQt5實(shí)戰(zhàn)項(xiàng)目之網(wǎng)速監(jiān)控器的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Python PyQt5 網(wǎng)速監(jiān)控器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

大足县| 平昌县| 宁海县| 南开区| 塔河县| 闽清县| 安康市| 朝阳区| 时尚| 莒南县| 化州市| 太白县| 朝阳市| 安平县| 石狮市| 金溪县| 天门市| 乌拉特中旗| 长子县| 华坪县| 云安县| 肥东县| 湛江市| 永和县| 垫江县| 大丰市| 洛南县| 临安市| 甘洛县| 东辽县| 灵武市| 金乡县| 延寿县| 兴义市| 陈巴尔虎旗| 苍溪县| 翁牛特旗| 万州区| 万荣县| 襄樊市| 太白县|