본문 바로가기
IT정보/AI프로그래밍

내컴퓨터 정보확인하는 프로그램

by IT아재 2025. 3. 14.
반응형

 오늘은 내 컴퓨터의 정보들을 확인해 주는 프로그램을 만들어보겠습니다. 흔히들 내 컴퓨터는 메인보드이름이 뭐지? 메모리는 몇 기가고 어떤 메모리이지? 뜯어볼까? 어떻게 하지 하는 경우들이 있을 겁니다. 물론 그것을 편리하게 해주는 프로그램도 있죠. 그래서 손쉽게 컴퓨터 정보를 알아볼 수 있는 프로그램을 만들어 보겠습니다.

 

프롬프트

 

내컴퓨터의 정보를 확인하는 프로그램을 만들고 싶어. 알고 싶은 내용은 cpu정보,메모리정보,그래픽카드정보,메인보드정보를 탭형태로 작성해서 보여주고 각 탭에서는 세부항목을 간결하고 보기좋게 표현해줬으면 좋겠어

 

 

ChatGPT 결과

 

이제 이 프로그램을 실행하면 CPU, 메모리, GPU, 메인보드 정보를 각각의 탭에서 확인할 수 있습니다. GPUtil과 wmi 라이브러리가 필요하므로, 실행 전 다음 명령어로 설치하세요:

 
pip install psutil GPUtil wmi
 

이쁘게 스타일을 추가하고 싶다면 ttk.Style()을 활용하면 됩니다. 추가적인 개선이 필요하면 알려주세요! 😊

 

 

코드

 

import tkinter as tk
from tkinter import ttk
import platform
import psutil
import GPUtil
import wmi

def get_cpu_info():
    cpu_info = platform.processor()
    cores = psutil.cpu_count(logical=False)
    threads = psutil.cpu_count(logical=True)
    return f"CPU: {cpu_info}\n코어 수: {cores}\n쓰레드 수: {threads}"

def get_memory_info():
    mem = psutil.virtual_memory()
    return f"총 메모리: {mem.total / (1024 ** 3):.2f} GB\n사용 가능 메모리: {mem.available / (1024 ** 3):.2f} GB"

def get_gpu_info():
    gpus = GPUtil.getGPUs()
    if not gpus:
        return "GPU 정보를 가져올 수 없습니다."
    gpu_info = ""
    for gpu in gpus:
        gpu_info += f"GPU: {gpu.name}\n메모리: {gpu.memoryTotal} MB\n온도: {gpu.temperature}°C\n"
    return gpu_info

def get_motherboard_info():
    c = wmi.WMI()
    for board in c.Win32_BaseBoard():
        return f"메인보드: {board.Manufacturer} {board.Product}"
    return "메인보드 정보를 가져올 수 없습니다."

# GUI 설정
root = tk.Tk()
root.title("내 컴퓨터 정보")
root.geometry("400x300")

notebook = ttk.Notebook(root)
notebook.pack(expand=True, fill='both')

# CPU 정보 탭
cpu_frame = ttk.Frame(notebook)
cpu_label = tk.Label(cpu_frame, text=get_cpu_info(), justify='left')
cpu_label.pack(padx=10, pady=10)
notebook.add(cpu_frame, text="CPU 정보")

# 메모리 정보 탭
memory_frame = ttk.Frame(notebook)
memory_label = tk.Label(memory_frame, text=get_memory_info(), justify='left')
memory_label.pack(padx=10, pady=10)
notebook.add(memory_frame, text="메모리 정보")

# GPU 정보 탭
gpu_frame = ttk.Frame(notebook)
gpu_label = tk.Label(gpu_frame, text=get_gpu_info(), justify='left')
gpu_label.pack(padx=10, pady=10)
notebook.add(gpu_frame, text="GPU 정보")

# 메인보드 정보 탭
motherboard_frame = ttk.Frame(notebook)
motherboard_label = tk.Label(motherboard_frame, text=get_motherboard_info(), justify='left')
motherboard_label.pack(padx=10, pady=10)
notebook.add(motherboard_frame, text="메인보드 정보")

root.mainloop()

 

결과

 

우선 설명해준대로 인스톨을 해줍니다.

 

C:\Users\qwe\pythonPG>pip install psutil GPUtil wmi

 

 

이제 얼마나 이쁘고 세세한 정보를 보여줄지 궁금합니다. 자 보시죠.

 

 

 

음 마음에 조금 안들고 GPU는 가져올 수 없다고 나오네요 좀 더 변경해야겠습니다.

 

 

 

고도화 프롬프트

 

각 탭의 정보는 테이블형태로 보여줬으면하고 CPU 정보에는 네임,패키지,스팩션 현재코어스피드, 코어수, 쓰레드수 로 상세히 보여주고 GPU정보는 제거하고 그래픽정보로 변경해줘. 나머지 탭도 좀더 보여줄수 있는 정보를 보기좋게 분할해서 보여줘

 

 

고도화 코드

 

import tkinter as tk
from tkinter import ttk
import platform
import psutil
import wmi

def get_cpu_info():
    c = wmi.WMI()
    cpu = c.Win32_Processor()[0]
    return [
        ("이름", cpu.Name),
        ("패키지", cpu.NumberOfCores),
        ("스펙션", cpu.Manufacturer),
        ("현재 코어 속도", f"{cpu.CurrentClockSpeed} MHz"),
        ("코어 수", cpu.NumberOfCores),
        ("쓰레드 수", psutil.cpu_count(logical=True))
    ]

def get_memory_info():
    mem = psutil.virtual_memory()
    return [
        ("총 메모리", f"{mem.total / (1024 ** 3):.2f} GB"),
        ("사용 가능 메모리", f"{mem.available / (1024 ** 3):.2f} GB"),
        ("사용 중 메모리", f"{mem.used / (1024 ** 3):.2f} GB"),
        ("메모리 사용률", f"{mem.percent}%")
    ]

def get_graphics_info():
    c = wmi.WMI()
    gpus = c.Win32_VideoController()
    info = []
    for gpu in gpus:
        info.append(("이름", gpu.Name))
        info.append(("메모리", f"{int(gpu.AdapterRAM / (1024 ** 2))} MB"))
        info.append(("드라이버 버전", gpu.DriverVersion))
    return info

def get_motherboard_info():
    c = wmi.WMI()
    board = c.Win32_BaseBoard()[0]
    return [
        ("제조사", board.Manufacturer),
        ("제품명", board.Product),
        ("버전", board.Version)
    ]

def create_table(frame, data):
    for i, (key, value) in enumerate(data):
        ttk.Label(frame, text=key, width=20, anchor="w", relief="ridge").grid(row=i, column=0, padx=5, pady=2)
        ttk.Label(frame, text=value, width=40, anchor="w", relief="ridge").grid(row=i, column=1, padx=5, pady=2)

root = tk.Tk()
root.title("내 컴퓨터 정보")
root.geometry("500x400")

notebook = ttk.Notebook(root)
notebook.pack(expand=True, fill='both')

# CPU 정보 탭
cpu_frame = ttk.Frame(notebook)
create_table(cpu_frame, get_cpu_info())
notebook.add(cpu_frame, text="CPU 정보")

# 메모리 정보 탭
memory_frame = ttk.Frame(notebook)
create_table(memory_frame, get_memory_info())
notebook.add(memory_frame, text="메모리 정보")

# 그래픽 정보 탭
graphics_frame = ttk.Frame(notebook)
create_table(graphics_frame, get_graphics_info())
notebook.add(graphics_frame, text="그래픽 정보")

# 메인보드 정보 탭
motherboard_frame = ttk.Frame(notebook)
create_table(motherboard_frame, get_motherboard_info())
notebook.add(motherboard_frame, text="메인보드 정보")

root.mainloop()

 

반응형
고도화 결과

 

 

 

 

자 훨씬 보기 나아졌습니다. 그리고 정보도 좀더 구체화되었네요.

이제 누가 컴퓨터 사양을 물어봐도 거뜬하게 대답해 줄 수 있는 나만의 프로그램이 만들어졌습니다.

 

고도화는 하면할 수록 더 좋은 프로그램이 될 것입니다 만 전 어디까지나 프로그램을 만들고 어떤 점을 보완해 가는지를 보여드려 더 좋은 결과를 유도하도록 학습하시는 것을 목표로 하고 있기 때문에 여기까지로 만족하겠습니다.

 

어떤가요? 정말 만족스럽지 않나요? ^^

 

그럼 이만 IT아재였습니다.

반응형