Монитор системы Linux с использованием Tkinter

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом проекте вы научитесь создавать монитор системы Linux с использованием Python и библиотеки Tkinter. Монитор системы будет отображать实时информацию о CPU, RAM, использовании диска и статистике сети.

👀 Предварительный просмотр

Предварительный просмотр GUI монитора системы Linux

🎯 Задачи

В этом проекте вы научитесь:

  • Создавать графический интерфейс пользователя (GUI) с использованием Tkinter.
  • Использовать библиотеку psutil для получения实时информации о системе.
  • Отображать использование CPU, использование RAM, использование диска и статистику сети.

🏆 Достижения

После завершения этого проекта вы сможете:

  • Создать GUI в Python с использованием Tkinter.
  • Использовать библиотеку 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 для разделения категорий информации

Добавьте следующий код, чтобы создать виджет 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')

Мы добавляем рамки в Notebook с использованием метода 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(). Метод after() принимает два параметра: время в миллисекундах и функцию для вызова.

✨ Проверить решение и практиковаться

Запустите проект

Для запуска проекта добавьте следующий код в конец файла:

root.mainloop()

Наконец, переключитесь на рабочий стол и запустите проект с использованием следующей команды:

python linux_system_monitor.py
Скриншот команды выполнения проекта
✨ Проверить решение и практиковаться

Резюме

В этом проекте вы узнали, как создать монитор системы Linux с использованием Python и библиотеки Tkinter. Монитор системы отображает актуальную информацию о CPU, RAM, использовании диска и статистике сети. Следуя пошаговым инструкциям и выполняя код, вы успешно создали функциональный монитор системы.