1st
This commit is contained in:
commit
c55e87a452
2 changed files with 107 additions and 0 deletions
32
battery_checker.py
Normal file
32
battery_checker.py
Normal file
|
@ -0,0 +1,32 @@
|
|||
import xml.etree.ElementTree as ET
|
||||
import subprocess
|
||||
import os
|
||||
|
||||
def get(filename):
|
||||
if os.path.isfile(filename):
|
||||
os.remove(filename)
|
||||
|
||||
try:
|
||||
detail = subprocess.run(["powercfg", "/batteryreport", "/output", filename, "/XML"], check=True)
|
||||
return 0
|
||||
except:
|
||||
return 1
|
||||
|
||||
def parse(filename):
|
||||
tree = ET.parse(filename)
|
||||
root = tree.getroot()
|
||||
|
||||
capacity = {"design": int(root[2][0][7].text),
|
||||
"current": int(root[2][0][8].text),
|
||||
"cycle": int(root[2][0][9].text)}
|
||||
|
||||
return capacity
|
||||
|
||||
xmlfile = "battery.xml"
|
||||
|
||||
get_detail = get(xmlfile)
|
||||
if get_detail == 0:
|
||||
battery_about = parse(xmlfile)
|
||||
print("電池の容量 : " + str(round(battery_about["current"] / battery_about["design"] * 100, 1)) + " %")
|
||||
else:
|
||||
print("エラー")
|
75
battery_checker_gui.py
Normal file
75
battery_checker_gui.py
Normal file
|
@ -0,0 +1,75 @@
|
|||
import xml.etree.ElementTree as ET
|
||||
import subprocess
|
||||
import os
|
||||
import customtkinter
|
||||
|
||||
class Battery():
|
||||
def get(self, filename):
|
||||
if os.path.isfile(filename):
|
||||
os.remove(filename)
|
||||
|
||||
try:
|
||||
detail = subprocess.run(["powercfg", "/batteryreport", "/output", filename, "/XML"], check=True)
|
||||
return 0
|
||||
except:
|
||||
return 1
|
||||
|
||||
def parse(self, filename):
|
||||
tree = ET.parse(filename)
|
||||
root = tree.getroot()
|
||||
|
||||
capacity = {"design": int(root[2][0][7].text),
|
||||
"current": int(root[2][0][8].text),
|
||||
"cycle": int(root[2][0][9].text)}
|
||||
|
||||
return capacity
|
||||
|
||||
class App(customtkinter.CTk):
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
|
||||
appname = "ばってりーちぇっかー"
|
||||
frame_padx = 10
|
||||
frame_pady = 10
|
||||
|
||||
self.title = appname
|
||||
self.geometry("360x500")
|
||||
self.resizable(height=False, width=False)
|
||||
|
||||
self.frame = customtkinter.CTkFrame(self, corner_radius=0)
|
||||
self.frame.grid(row=0, column=0, sticky="nsew")
|
||||
self.frame.grid_rowconfigure(4, weight=1)
|
||||
|
||||
label_w = 300
|
||||
label_padx = 20
|
||||
label_pady = 20
|
||||
|
||||
self.battery_current_capacity_frame = customtkinter.CTkFrame(self.frame, fg_color="transparent")
|
||||
self.battery_current_capacity_frame.grid(row=0, column=0, padx=frame_padx, pady=frame_pady)
|
||||
|
||||
self.battery_current_capacity_title = customtkinter.CTkLabel(self.battery_current_capacity_frame, text="現在のバッテリーの状態", width=label_w)
|
||||
self.battery_current_capacity_title.grid(row=0, column=0, padx=label_padx, pady=label_pady)
|
||||
|
||||
self.battery_current_capacity_detail = customtkinter.CTkLabel(self.battery_current_capacity_frame, text="計測中...", width=label_w)
|
||||
self.battery_current_capacity_detail.grid(row=1, column=0, padx=label_padx, pady=label_pady)
|
||||
|
||||
def bat_get():
|
||||
bat = Battery()
|
||||
|
||||
xmlfile = "battery.xml"
|
||||
|
||||
get_detail = bat.get(xmlfile)
|
||||
if get_detail == 0:
|
||||
battery_about = bat.parse(xmlfile)
|
||||
self.battery_current_capacity_detail.configure(text=str(round(battery_about["current"] / battery_about["design"] * 100, 1)) + " %")
|
||||
print("電池の容量 : " + str(round(battery_about["current"] / battery_about["design"] * 100, 1)) + " %")
|
||||
else:
|
||||
print("エラー")
|
||||
|
||||
bat_get()
|
||||
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
app = App()
|
||||
app.mainloop()
|
Loading…
Reference in a new issue