import tkinter as tk
import psutil
import wmi
import cpuinfo
import pyperclip
import GPUtil
import os
import subprocess
def get_memory_type(memory_type):
mem_types = {
0x0: '',
0x1: 'Other',
0x2: 'DRAM',
0x3: 'Synchronous DRAM',
0x4: 'Cache DRAM',
0x5: 'EDO',
0x6: 'EDRAM',
0x7: 'VRAM',
0x8: 'SRAM',
0x9: 'RAM',
0xa: 'ROM',
0xb: 'Flash',
0xc: 'EEPROM',
0xd: 'FEPROM',
0xe: 'EPROM',
0xf: 'CDRAM',
0x10: '3DRAM',
0x11: 'SDRAM',
0x12: 'SGRAM',
0x13: 'RDRAM',
0x14: 'DDR',
0x15: 'DDR2',
0x16: 'DDR2 FB-DIMM',
0x17: 'Undefined 23',
0x18: 'DDR3',
0x19: 'FBD2',
0x1a: 'DDR4',
0x1b: 'LPDDR',
0x1c: 'LPDDR2',
0x1d: 'LPDDR3',
0x1e: 'LPDDR4'
}
return mem_types.get(memory_type, 'Unknown')
def get_system_info():
c = wmi.WMI()
# Get motherboard information
motherboard = c.Win32_BaseBoard()[0].Product
# Get processor information
processor_info = cpuinfo.get_cpu_info()
processor = f"{processor_info['brand_raw']} ({psutil.cpu_percent()}% загрузки)"
# Get memory information
total_memory = psutil.virtual_memory().total / (1024 ** 3)
memory_percent = psutil.virtual_memory().percent
memory_type = get_memory_type(c.Win32_PhysicalMemory()[0].MemoryType)
# Get disk usage information
partitions = psutil.disk_partitions()
disks_used = 0
disks_total = 0
for part in partitions:
if not 'cdrom' in part.opts and part.fstype:
disk_usage = psutil.disk_usage(part.mountpoint)
disks_total += disk_usage.total / (1024 ** 3)
disks_used += disk_usage.used / (1024 ** 3)
system_info = f"Модель материнской платы: {motherboard}\n\nМодель процессора: {processor}\n\nКоличество оперативной памяти: {total_memory:.2f} ГБ {memory_type}({memory_percent}% загрузки) \n\nСвободное пространство на диске: {disks_total - disks_used:.2f} ГБ"
return system_info
def copy_mb_info():
system_info = get_system_info()
mb_info = system_info.split('\n')[0]
pyperclip.copy(mb_info)
def copy_cpu_info():
cpu_info = get_system_info().split('\n')[1]
pyperclip.copy(cpu_info)
def show_system_info(label):
label.configure(text=get_system_info())
# Create the main window
root = tk.Tk()
root.geometry("520x240")
root.resizable(False, False)
root.title("INFO PC by f0bas v2.3.0")
# Create the button to show system info
show_info_button = tk.Button(root, text="Информация о ПК", font=("Arial", 14),
bg="#32CD32", command=lambda: show_system_info(info_label))
show_info_button.pack(side=tk.TOP, fill=tk.X)
# Create the copy motherboard info button
copy_mb_button = tk.Button(root, text="Копировать MB", font=("Arial", 10), command=copy_mb_info,bg="#98FB98")
copy_mb_button.place(x=0, y=210, width=250, height=30)
#Create the copy CPU info button
copy_cpu_button = tk.Button(root, text="Копировать CPU", font=("Arial", 10), command=copy_cpu_info,
bg="#98FB98")
copy_cpu_button.place(x=270, y=210, width=250, height=30)
#Create the info label
info_label = tk.Label(root, font=("Arial", 10), justify=tk.LEFT)
info_label.pack(pady=10)
root.mainloop()
я не питонист, но не понял - зачем pyperclip.copy(cpu_info) и аналогичное для mb_info, если оно потом нигде не используется?
дает возможность скопировать информацию о мат плате и о процессоре
_del_
Комментарий недоступен
ну вот захотелось так поэкспериментировать как это работает в питоне
От админа запускать наверное надо
тоже самое пробывал