Tkinter 를 사용한 Linux 시스템 모니터

PythonBeginner
지금 연습하기

소개

이 프로젝트에서는 Python 과 Tkinter 라이브러리를 사용하여 Linux 시스템 모니터를 만드는 방법을 배우게 됩니다. 시스템 모니터는 CPU, RAM, 디스크 사용량 및 네트워크 통계에 대한 실시간 정보를 표시합니다.

👀 미리보기

Linux system monitor GUI preview

🎯 과제

이 프로젝트에서 다음을 배우게 됩니다:

  • Tkinter 를 사용하여 GUI (Graphical User Interface, 그래픽 사용자 인터페이스) 를 만드는 방법.
  • psutil 라이브러리를 사용하여 실시간 시스템 정보를 얻는 방법.
  • CPU 사용량, RAM 사용량, 디스크 사용량 및 네트워크 통계를 표시하는 방법.

🏆 성과

이 프로젝트를 완료하면 다음을 수행할 수 있습니다:

  • Tkinter 를 사용하여 Python 에서 GUI 를 생성합니다.
  • psutil 라이브러리를 사용하여 시스템 정보를 얻습니다.
  • 실시간 데이터로 레이블을 업데이트합니다.
  • 프레임과 노트북 위젯을 사용하여 정보를 구성합니다.

프로젝트 파일 생성

linux_system_monitor.py라는 파일을 생성하고 텍스트 편집기에서 엽니다.

cd ~/project
touch linux_system_monitor.py

GUI 생성

시스템 모니터의 GUI (Graphical User Interface, 그래픽 사용자 인터페이스) 를 생성하기 위해 다음 코드를 추가합니다:

import tkinter as tk
from tkinter import ttk
import psutil

root = tk.Tk()
root.title('Linux System Monitor')

다음 명령을 사용하여 psutil 라이브러리를 설치합니다:

sudo pip install psutil

정보 카테고리 분리를 위한 Notebook 위젯 생성

다양한 시스템 정보 카테고리를 분리할 수 있는 notebook 위젯을 생성하기 위해 다음 코드를 추가합니다:

notebook = ttk.Notebook(root)
notebook.pack()

다음 단계에서 notebook 에 프레임을 추가할 것입니다.

프레임 생성

각 시스템 정보 카테고리에 대한 프레임을 생성하기 위해 다음 코드를 추가합니다:

cpu_frame = ttk.Frame(notebook, padding=10)
ram_frame = ttk.Frame(notebook, padding=10)
disk_frame = ttk.Frame(notebook, padding=10)
network_frame = ttk.Frame(notebook, padding=10)

위 코드에서는 각 시스템 정보 카테고리별로 하나씩, 총 네 개의 프레임을 생성하고 있습니다. padding 매개변수는 각 프레임 주변에 10 픽셀의 패딩을 추가합니다.

Notebook 에 프레임 추가

notebook 에 프레임을 추가하기 위해 다음 코드를 추가합니다:

notebook.add(cpu_frame, text='CPU Info')
notebook.add(ram_frame, text='RAM Info')
notebook.add(disk_frame, text='Disk Info')
notebook.add(network_frame, text='Network Info')

add() 메서드를 사용하여 프레임을 notebook 에 추가하고 있습니다. text 매개변수는 각 프레임의 탭에 표시될 텍스트를 지정합니다.

프레임에 대한 레이블 생성

각 프레임에 대한 레이블을 생성하기 위해 다음 코드를 추가합니다:

cpu_percent_label = ttk.Label(cpu_frame)
cpu_percent_label.pack()

ram_percent_label = ttk.Label(ram_frame)
ram_percent_label.pack()

disk_percent_label = ttk.Label(disk_frame)
disk_percent_label.pack()

network_label = ttk.Label(network_frame)
network_label.pack()

이러한 레이블은 다음 단계에서 실시간 시스템 정보로 채워질 것입니다.

실시간 정보로 레이블 채우기

실시간 시스템 정보로 레이블을 업데이트하기 위해 다음 코드를 추가합니다:

def update_labels():
    cpu_percent = psutil.cpu_percent()
    cpu_percent_label.config(text=f'CPU Usage: {cpu_percent}%')

    ram_percent = psutil.virtual_memory().percent
    ram_percent_label.config(text=f'RAM Usage: {ram_percent}%')

    disk_percent = psutil.disk_usage('/').percent
    disk_percent_label.config(text=f'Disk Usage: {disk_percent}%')

    network_stats = psutil.net_io_counters()
    network_label.config(text=f'Network Stats:\nBytes Sent: {network_stats.bytes_sent}\nBytes Received: {network_stats.bytes_recv}')

    root.after(1000, update_labels)

update_labels()

update_labels() 함수는 after() 메서드를 사용하여 매 초마다 호출됩니다. after() 메서드는 두 개의 매개변수를 받습니다: 밀리초 단위의 시간과 호출할 함수입니다.

프로젝트 실행

프로젝트를 실행하려면 파일 끝에 다음 코드를 추가합니다:

root.mainloop()

마지막으로, 데스크톱으로 전환하여 다음 명령을 사용하여 프로젝트를 실행합니다:

python linux_system_monitor.py

Project execution command screenshot

요약

이 프로젝트에서 Python 과 Tkinter 라이브러리를 사용하여 Linux 시스템 모니터를 만드는 방법을 배웠습니다. 시스템 모니터는 CPU, RAM, 디스크 사용량 및 네트워크 통계에 대한 실시간 정보를 표시합니다. 단계별 지침을 따르고 코드를 실행함으로써 기능적인 시스템 모니터를 성공적으로 만들었습니다.

✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습✨ 솔루션 확인 및 연습