做了一款马鸥GPU占用指示器。占用越高,摇得越快。

本文最后更新于:2024年2月15日 早上

做了一款马鸥GPU占用指示器。占用越高,摇得越快。

MaZhao
灵感来源:做了一款只因CPU占用指示器,占用越低 舞越快
素材来源:【流浪地球】夜の踊り马兆

介绍

晓晞啊,这是海鸥吗?
我也没太见过,看样子应该是…咱们北京航天局的马主任!

看了小破球,又看到网友的二创,发现了个神奇的东西–马鸥
正好最近看见了 做了一款只因CPU占用指示器,占用越低舞越快 这条视频。
欸,那我也做一个。
效果如图
MaZhao

上代码!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
import pynvml
from tkinter import *
from pywin10 import TaskBarIcon
from sys import exit

window = Tk()
with open('settings.txt', 'r') as f:
data = f.read().split('\n') # 显卡号及gif名

def get_speed():
pynvml.nvmlInit()
handle = pynvml.nvmlDeviceGetHandleByIndex(int(data[0])) # 指定显卡号
meminfo = pynvml.nvmlDeviceGetMemoryInfo(handle)
all = meminfo.total/1024 # 获取全部显存(单位kb)
use = meminfo.used/1024 # 获取已用显存(单位kb)
speed = use/all*100 # 算出已用百分之几
return round(speed)


def update(idx):
global g
speed = 100-get_speed() # 占用越高间隔越快
print(speed)
frame = frames[idx]
idx += 1 # 下一帧的序号:在0~9之间循环(共10帧)
g.configure(image=frame) # 刷新图片
window.after(speed, update, idx % numIdx)


numIdx = int(data[2]) # gif的帧数
frames = [PhotoImage(file=data[1], format='gif -index %i' % (i))
for i in range(numIdx)]
task = TaskBarIcon(icon="ico.ico", hover_text='MGPU',
menu_options=[['退出', None, lambda: exit(0), 0]])
window.wm_attributes("-transparentcolor", "snow") # 背景透明
g = Label(window, text='--', background='snow')
g.pack()
window.overrideredirect(True) # 无边框
window.geometry('240x240+0+0') # 为什么置顶后+0+0失效呢?
window.attributes('-topmost', True) # 置顶
window.after(0, update, 0) # 开始update
window.mainloop()

settings.txt是干啥用的

1
2
3
0
MaZhao.gif
10

第一行是显卡号,可以在“任务管理器”中查看(指定核心显卡或是独立显卡)。
第二行是gif文件,你可以用自定义的gif,但是必须更改第三行的内容。
第三行是gif的总帧数,更改gif后请根据你gif的帧数更改这行。

打包好的

我使用pyinstaller打包,打包后文件较大。
杀毒软件会误报,如果不放心可自行安装python运行上面的代码!

关闭方法:在系统托盘里右键点击MGPU退出

本站下载
zip直连下载链接

Haoyu网盘下载
Haoyu网盘分享链接


做了一款马鸥GPU占用指示器。占用越高,摇得越快。
https://g-haoyu.top/2023/02/10/做了一款马鸥GPU占用指示器。占用越高,摇得越快。/
作者
Haoyu
发布于
2023年2月10日
更新于
2024年2月15日
许可协议