хелп богов питона

Собственно решил побаловаться и покодить на питоне ,и зародилась идея создать простую программу/утилиту которая просто выводит одним кликом модель мат.платы ,модель процессора, количество озу и свободного места на диске .Просто для того что бы не лазить по пк ,не запускать терминал и не качать разные проги ,а иметь свой простой инструмент .все шло хорошо собрал код ,проверил работает ,ошибок нет .решил я его просто собрать в один exe файл использовав простой "Auto Py to Exe " и все собирает но при запуске и нажание кнопки которая должна выводить информацию открывается еще одно такое же окно ,нажимаешь уже на новом окне кнопку происходит тоже самое и так до бесконечности .собственно как можно это пофиксить

хелп богов питона
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()
1.1K1.1K показов
226226 открытий
12 комментариев

я не питонист, но не понял - зачем pyperclip.copy(cpu_info) и аналогичное для mb_info, если оно потом нигде не используется?

Ответить

дает возможность скопировать информацию о мат плате и о процессоре

Ответить

_del_

Ответить

Комментарий недоступен

Ответить

ну вот захотелось так поэкспериментировать как это работает в питоне

Ответить

От админа запускать наверное надо

Ответить

тоже самое пробывал

Ответить