使用 Tkinter 的 Linux 系统监视器

PythonBeginner
立即练习

介绍

在这个项目中,你将学习如何使用 Python 和 Tkinter 库创建一个 Linux 系统监视器。该系统监视器将显示有关 CPU、内存、磁盘使用情况和网络统计信息的实时数据。

👀 预览

Linux 系统监视器 GUI 预览

🎯 任务

在这个项目中,你将学习:

  • 如何使用 Tkinter 创建图形用户界面(GUI)。
  • 如何使用 psutil 库获取实时系统信息。
  • 如何显示 CPU 使用情况、内存使用情况、磁盘使用情况和网络统计信息。

🏆 成果

完成这个项目后,你将能够:

  • 使用 Tkinter 在 Python 中创建 GUI。
  • 使用 psutil 库获取系统信息。
  • 使用实时数据更新标签。
  • 使用框架和笔记本小部件组织信息。
这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 中级 级别的实验,完成率为 69%。获得了学习者 96% 的好评率。

创建项目文件

创建一个名为 linux_system_monitor.py 的文件,并在文本编辑器中打开它。

cd ~/project
touch linux_system_monitor.py
✨ 查看解决方案并练习

创建图形用户界面

添加以下代码以创建系统监视器的图形用户界面(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)

在上述代码中,我们创建了四个框架,每个框架对应一个系统信息类别。padding 参数在每个框架周围添加了 10 像素的内边距。

✨ 查看解决方案并练习

将框架添加到笔记本中

添加以下代码将框架添加到笔记本:

notebook.add(cpu_frame, text='CPU 信息')
notebook.add(ram_frame, text='内存信息')
notebook.add(disk_frame, text='磁盘信息')
notebook.add(network_frame, text='网络信息')

我们使用 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 使用情况:{cpu_percent}%')

    ram_percent = psutil.virtual_memory().percent
    ram_percent_label.config(text=f'内存使用情况:{ram_percent}%')

    disk_percent = psutil.disk_usage('/').percent
    disk_percent_label.config(text=f'磁盘使用情况:{disk_percent}%')

    network_stats = psutil.net_io_counters()
    network_label.config(text=f'网络统计信息:\n发送的字节数:{network_stats.bytes_sent}\n接收的字节数:{network_stats.bytes_recv}')

    root.after(1000, update_labels)

update_labels()

函数 update_labels() 使用 after() 方法每秒调用一次。after() 方法接受两个参数:以毫秒为单位的时间和要调用的函数。

✨ 查看解决方案并练习

运行项目

要运行该项目,请在文件末尾添加以下代码:

root.mainloop()

最后,切换到桌面并使用以下命令运行项目:

python linux_system_monitor.py
项目执行命令截图
✨ 查看解决方案并练习

总结

在这个项目中,你学习了如何使用 Python 和 Tkinter 库创建一个 Linux 系统监视器。该系统监视器会显示有关 CPU、内存、磁盘使用情况和网络统计信息的实时数据。通过按照逐步说明并执行代码,你成功创建了一个功能正常的系统监视器。