Monitor de Sistema Linux Usando Tkinter

PythonBeginner
Pratique Agora

Introdução

Neste projeto, você aprenderá como criar um monitor de sistema Linux usando Python e a biblioteca Tkinter. O monitor de sistema exibirá informações em tempo real sobre a CPU, RAM, uso do disco e estatísticas de rede.

👀 Pré-visualização

Pré-visualização da GUI do monitor de sistema Linux

🎯 Tarefas

Neste projeto, você aprenderá:

  • Como criar uma interface gráfica do usuário (GUI - Graphical User Interface) usando Tkinter.
  • Como usar a biblioteca psutil para obter informações do sistema em tempo real.
  • Como exibir o uso da CPU, uso da RAM, uso do disco e estatísticas de rede.

🏆 Conquistas

Após concluir este projeto, você será capaz de:

  • Criar uma GUI em Python usando Tkinter.
  • Usar a biblioteca psutil para obter informações do sistema.
  • Atualizar rótulos com dados em tempo real.
  • Organizar informações usando frames (quadros) e widgets notebook (caderno).

Criar os arquivos do projeto

Crie um arquivo chamado linux_system_monitor.py e abra-o em seu editor de texto.

cd ~/project
touch linux_system_monitor.py
✨ Verificar Solução e Praticar

Criar a GUI

Adicione o seguinte código para criar a interface gráfica do usuário (GUI - Graphical User Interface) para o monitor do sistema:

import tkinter as tk
from tkinter import ttk
import psutil

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

Instale a biblioteca psutil usando o seguinte comando:

sudo pip install psutil
✨ Verificar Solução e Praticar

Criar o widget Notebook para separar categorias de informação

Adicione o seguinte código para criar um widget Notebook, que nos permite separar diferentes categorias de informação do sistema:

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

Adicionaremos frames ao notebook no próximo passo.

✨ Verificar Solução e Praticar

Criar Frames

Adicione o seguinte código para criar frames para cada categoria de informação do 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)

No código acima, estamos criando quatro frames, um para cada categoria de informação do sistema. O parâmetro padding adiciona um preenchimento de 10 pixels em torno de cada frame.

✨ Verificar Solução e Praticar

Adicionar Frames ao Notebook

Adicione o seguinte código para adicionar os frames ao 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')

Estamos adicionando os frames ao notebook usando o método add(). O parâmetro text especifica o texto que será exibido na aba para cada frame.

✨ Verificar Solução e Praticar

Criar Rótulos para os Frames

Adicione o seguinte código para criar labels para cada frame:

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

Essas labels serão preenchidas com informações do sistema em tempo real no próximo passo.

✨ Verificar Solução e Praticar

Preencher Rótulos com Informações em Tempo Real

Adicione o seguinte código para atualizar as labels com informações do sistema em tempo real:

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

A função update_labels() é chamada a cada segundo usando o método after(). O método after() recebe dois parâmetros: o tempo em milissegundos e a função a ser chamada.

✨ Verificar Solução e Praticar

Executar o Projeto

Para executar o projeto, adicione o seguinte código no final do seu arquivo:

root.mainloop()

Finalmente, mude para a Área de Trabalho (Desktop) e execute o projeto usando o seguinte comando:

python linux_system_monitor.py
Captura de tela do comando de execução do projeto
✨ Verificar Solução e Praticar

Resumo

Neste projeto, você aprendeu como criar um monitor de sistema Linux usando Python e a biblioteca Tkinter. O monitor de sistema exibe informações em tempo real sobre o uso da CPU, RAM, disco e estatísticas de rede. Ao seguir as instruções passo a passo e executar o código, você criou com sucesso um monitor de sistema funcional.