Tkinter を使った Linux システムモニタ

PythonBeginner
オンラインで実践に進む

はじめに

このプロジェクトでは、Python と Tkinter ライブラリを使って Linux システムモニタを作成する方法を学びます。システムモニタは、CPU、RAM、ディスク使用状況、およびネットワーク統計に関するリアルタイム情報を表示します。

👀 プレビュー

Linux システムモニタ GUI のプレビュー

🎯 タスク

このプロジェクトでは、以下を学びます。

  • Tkinter を使ってグラフィカルユーザーインターフェイス(GUI)を作成する方法。
  • psutilライブラリを使ってリアルタイムのシステム情報を取得する方法。
  • CPU 使用率、RAM 使用率、ディスク使用率、およびネットワーク統計を表示する方法。

🏆 成果

このプロジェクトを完了すると、以下のことができるようになります。

  • Python で Tkinter を使って GUI を作成する。
  • psutilライブラリを使ってシステム情報を取得する。
  • リアルタイムデータでラベルを更新する。
  • フレームとノートブックウィジェットを使って情報を整理する。

プロジェクトファイルを作成する

linux_system_monitor.py という名前のファイルを作成し、テキストエディタで開きます。

cd ~/project
touch linux_system_monitor.py

GUI を作成する

システムモニタのグラフィカルユーザーインターフェイス(GUI)を作成するために、以下のコードを追加します。

import tkinter as tk
from tkinter import ttk
import psutil

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

以下のコマンドを使用して psutil ライブラリをインストールします。

sudo pip install psutil

情報のカテゴリを分離するためのノートブックウィジェットを作成する

システム情報の異なるカテゴリを分離することができるノートブックウィジェットを作成するために、以下のコードを追加します。

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

次のステップでノートブックにフレームを追加します。

フレームを作成する

システム情報の各カテゴリ用のフレームを作成するために、以下のコードを追加します。

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)

上記のコードでは、システム情報の各カテゴリ用に 4 つのフレームを作成しています。padding パラメータは、各フレームの周りに 10 ピクセルの余白を追加します。

ノートブックにフレームを追加する

ノートブックにフレームを追加するために、以下のコードを追加します。

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() メソッドを使用してノートブックにフレームを追加しています。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() メソッドを使って 1 秒ごとに呼び出されます。after() メソッドは 2 つのパラメータを取ります。ミリ秒単位の時間と呼び出す関数です。

プロジェクトを実行する

プロジェクトを実行するには、ファイルの末尾に以下のコードを追加します。

root.mainloop()

最後に、デスクトップに切り替えて、以下のコマンドを使用してプロジェクトを実行します。

python linux_system_monitor.py

Project execution command screenshot

まとめ

このプロジェクトでは、Python と Tkinter ライブラリを使って Linux システムモニタを作成する方法を学びました。このシステムモニタは、CPU、RAM、ディスク使用率、およびネットワーク統計に関する実時情報を表示します。手順を追ってコードを実行することで、機能するシステムモニタを成功裏に作成しました。

✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習✨ 解答を確認して練習