CPU使用率、CPU使用率グラフ、メモリ使用率、残バッテリーを表示するGUIアプリ
Mac想定です。
import PySimpleGUI as sg
import psutil
import threading
import time
sg.theme('SystemDefault')
#CPUとメモリの使用率,残バッテリーを取得
def getAllInfo():
start = time.time()
point_from=(0,0)
while True:
CPU = psutil.cpu_percent(interval=1)
CPU = int(CPU)
mem = psutil.virtual_memory()
battery = psutil.sensors_battery().percent
currentTime = time.time() - start
currentTime = int(currentTime)
window['-CPU-'].Update(CPU)
window['-mem-'].Update(mem.percent)
window['-battery-'].Update(battery)
point_end=(currentTime,CPU)
graph.draw_line(point_from, point_end, color='red', width=2)
time.sleep(1)
CPU = psutil.cpu_percent(interval=1)
CPU = int(CPU)
mem = psutil.virtual_memory()
battery = psutil.sensors_battery().percent
currentTime = time.time() - start
currentTime = int(currentTime)
point_from=(currentTime,CPU)
graph.draw_line(point_from, point_end, color='red', width=1)
graph.update()
graph = sg.Graph(canvas_size=(380,200),
graph_bottom_left=(0,0),
graph_top_right=(200,120))
# ウィンドウのレイアウト
layout = [ [sg.Text('CPU使用率'),sg.Text(key='-CPU-'),
sg.Text('メモリ使用率'),sg.Text(key='-mem-'),
sg.Text('残バッテリー'),sg.Text(key='-battery-'),],
[graph],
]
# ウィンドウオブジェクトの作成
window = sg.Window('ハードウェアモニター', layout, finalize=True, auto_size_text=True, element_padding=(10,10))
threading.Thread(target=getAllInfo, daemon=True).start()
# イベントのループ
while True:
# イベントの読み込み
event, values = window.read()
# ウィンドウの×ボタンが押されれば終了
if event == sg.WIN_CLOSED:
break
# ウィンドウ終了処理
window.close()
出来上がった物
拡張性
sg.theme('SystemDefault')
PySimpleGUIのテーマ指定。今回はSystemDefaultを指定