显示网速的小窗口
import tkinter import psutil import time from tkinter import * on_X = 0 #此时鼠标的x坐标 on_Y = 0 #此时鼠标的y坐标 def make_app(): app =Tk() app.geometry('100x50+1820+990') app.overrideredirect(True) #隐藏标题栏 app.config(bg='#303030') app.resizable(False,False) #不允许拖动调整大小 app.wm_attributes('-topmost',1) app.bind('<ButtonPress-1>',func=move_start) #鼠标左键按下 app.bind('<ButtonRelease-1>',func=move_stop) #鼠标左键放开 app.bind("<B1-Motion>",func=lambda event,app_=app:move_local(app_,event)) Label(name='up',text='',bg='#303030',fg='white').pack(fill=tkinter.X) Label(name='dw',text='',bg='#303030',fg='white').pack(fill=tkinter.X) return app def move_start(event): global on_X,on_Y on_X = event.x #是程序界面的位置,而不是整个屏幕的位置 on_Y = event.y def move_stop(event): global on_X,on_Y on_X = None on_Y = None def move_local(app,event): global on_X,on_Y x = app.winfo_x() + event.x - on_X y = app.winfo_y() + event.y - on_Y app.geometry("+{}+{}".format(x,y)) def get_speed(): net_send_ = psutil.net_io_counters().bytes_sent # 已发送的总的流量 net_down_ = psutil.net_io_counters().bytes_recv # 已接收的总的流量 time.sleep(0.1) net_send = psutil.net_io_counters().bytes_sent - net_send_ # 0.5秒内的流量差值 net_down = psutil.net_io_counters().bytes_recv - net_down_ # 0.5秒内的流量差值 #除法结果保留两位小数 def size_show(size): '''友好化文件大小字符串''' unit_dict = {0: r"B/s", 1: r"KB/s", 2: r"MB/s", 3: r"GB/s"} size = int(size) size_ = size unit_flag_int = 0 while size_ > 1024: size_ = size_ / 1024 unit_flag_int += 1 ret_size = "{}{}".format(round(size_, 2), unit_dict[unit_flag_int]) return ret_size #就是要乘以8才对的上 return ("↑:{}".format(size_show(net_send*8)),"↓:{}".format(size_show(net_down*8))) def ui_updata(do): data = do() #app下名字是lb2的子控件 up = app.children['up'] dw = app.children['dw'] up.config(text=data[0]) dw.config(text=data[1]) #每0.5秒后调用lambda:ui_updata(do)函数 app.after(500,lambda:ui_updata(do)) app = make_app() #每0.5秒后调用ui_updata(speed_test)函数 app.after(500,lambda :ui_updata(get_speed)) app.mainloop()