Monitor de sistema Linux usando Tkinter

PythonBeginner
Practicar Ahora

Introducción

En este proyecto, aprenderás a crear un monitor de sistema Linux utilizando Python y la biblioteca Tkinter. El monitor de sistema mostrará información en tiempo real sobre la CPU, la memoria RAM, el uso de disco y las estadísticas de red.

👀 Vista previa

Vista previa de la interfaz gráfica de usuario del monitor de sistema Linux

🎯 Tareas

En este proyecto, aprenderás:

  • Cómo crear una interfaz gráfica de usuario (GUI) utilizando Tkinter.
  • Cómo utilizar la biblioteca psutil para obtener información del sistema en tiempo real.
  • Cómo mostrar el uso de la CPU, el uso de la RAM, el uso de disco y las estadísticas de red.

🏆 Logros

Después de completar este proyecto, podrás:

  • Crear una GUI en Python utilizando Tkinter.
  • Utilizar la biblioteca psutil para obtener información del sistema.
  • Actualizar etiquetas con datos en tiempo real.
  • Organizar la información utilizando marcos y widgets de cuaderno.

Crear los archivos del proyecto

Crea un archivo llamado linux_system_monitor.py y dile que se abra en tu editor de texto.

cd ~/project
touch linux_system_monitor.py
✨ Revisar Solución y Practicar

Crear la interfaz gráfica de usuario (GUI)

Agrega el siguiente código para crear la interfaz gráfica de usuario (GUI) del monitor de sistema:

import tkinter as tk
from tkinter import ttk
import psutil

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

Instala la biblioteca psutil utilizando el siguiente comando:

sudo pip install psutil
✨ Revisar Solución y Practicar

Crear el widget Notebook para separar las categorías de información

Agrega el siguiente código para crear un widget de cuaderno, que nos permite separar diferentes categorías de información del sistema:

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

Agregaremos marcos al cuaderno en el siguiente paso.

✨ Revisar Solución y Practicar

Crear marcos

Agrega el siguiente código para crear marcos para cada categoría de información del sistema:

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)

En el código anterior, estamos creando cuatro marcos, uno para cada categoría de información del sistema. El parámetro padding agrega un relleno de 10 píxeles alrededor de cada marco.

✨ Revisar Solución y Practicar

Agregar marcos al Notebook

Agrega el siguiente código para agregar los marcos al cuaderno:

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')

Estamos agregando los marcos al cuaderno utilizando el método add(). El parámetro text especifica el texto que se mostrará en la pestaña de cada marco.

✨ Revisar Solución y Practicar

Crear etiquetas para los marcos

Agrega el siguiente código para crear etiquetas para cada marco:

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()

En el siguiente paso, esas etiquetas se llenarán con información real-time del sistema.

✨ Revisar Solución y Practicar

Llenar las etiquetas con información en tiempo real

Agrega el siguiente código para actualizar las etiquetas con información real-time del sistema:

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()

La función update_labels() se llama cada segundo utilizando el método after(). El método after() toma dos parámetros: el tiempo en milisegundos y la función a llamar.

✨ Revisar Solución y Practicar

Ejecutar el proyecto

Para ejecutar el proyecto, agrega el siguiente código al final de tu archivo:

root.mainloop()

Finalmente, cambia a Escritorio y ejecuta el proyecto usando el siguiente comando:

python linux_system_monitor.py
Captura de pantalla del comando de ejecución del proyecto
✨ Revisar Solución y Practicar

Resumen

En este proyecto, aprendiste cómo crear un monitor de sistema Linux utilizando Python y la biblioteca Tkinter. El monitor de sistema muestra información en tiempo real sobre la CPU, la RAM, el uso de disco y las estadísticas de red. Siguiendo las instrucciones paso a paso y ejecutando el código, creaste con éxito un monitor de sistema funcional.