import psutil
import tkinter as tk
# 获取当前时间字符串
def get_current_time():
return psutil.datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 更新标签信息
def update_labels():
disk_usage = psutil.disk_usage('/')
memory_usage = psutil.virtual_memory()
cpu_usage = psutil.cpu_percent(interval=1)
net_info = psutil.net_io_counters()
current_time = get_current_time()
time_label.config(text=f'当前时间:{current_time}', font=('Helvetica', 14), fg='blue')
disk_label.config(text=f'磁盘使用率:{disk_usage.percent}%', font=('Helvetica', 14), fg='green')
memory_label.config(text=f'内存使用率:{memory_usage.percent}%', font=('Helvetica', 14), fg='green')
cpu_label.config(text=f'CPU使用率:{cpu_usage}%', font=('Helvetica', 14), fg='green')
disk_total_label.config(text=f'磁盘总量:{disk_usage.total / 1024 ** 3:.2f}GB', font=('Helvetica', 14), fg='green')
disk_free_label.config(text=f'磁盘剩余量:{disk_usage.free / 1024 ** 3:.2f}GB', font=('Helvetica', 14), fg='green')
disk_used_label.config(text=f'磁盘已使用量:{disk_usage.used / 1024 ** 3:.2f}GB', font=('Helvetica', 14), fg='green')
recv_label.config(text=f'接收的数据量:{net_info.bytes_recv / 1024 ** 2:.2f}MB', font=('Helvetica', 14), fg='green')
send_label.config(text=f'发送的数据量:{net_info.bytes_sent / 1024 ** 2:.2f}MB', font=('Helvetica', 14), fg='green')
root.after(1, update_labels) # 更新频率设为1秒
# 创建GUI窗口
root = tk.Tk()
root.title('网络监控')
root.geometry('400x400')
# 创建标题标签
title_label = tk.Label(root, text='网络监控', font=('Helvetica', 20), fg='blue', pady=10)
title_label.pack()
# 创建显示标签
labels_frame = tk.Frame(root)
labels_frame.pack(pady=20)
time_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='blue')
time_label.pack(pady=5)
disk_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_label.pack(pady=5)
memory_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
memory_label.pack(pady=5)
cpu_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
cpu_label.pack(pady=5)
disk_total_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_total_label.pack(pady=5)
disk_free_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_free_label.pack(pady=5)
disk_used_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
disk_used_label.pack(pady=5)
recv_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
recv_label.pack(pady=5)
send_label = tk.Label(labels_frame, font=('Helvetica', 14), fg='green')
send_label.pack(pady=5)
# 启动监控循环
update_labels()
# 运行GUI主循环
root.mainloop()
主要功能是实时显示磁盘使用率、内存使用率、CPU使用率以及网络接收和发送的数据量。使用了psutil库来获取系统的相关信息,并使用tkinter库创建了一个简单的GUI窗口。
程序通过调用psutil.disk_usage('/')
来获取磁盘使用率,psutil.virtual_memory()
来获取内存使用率,psutil.cpu_percent(interval=1)
来获取CPU使用率,以及psutil.net_io_counters()
来获取网络接收和发送的数据量。
GUI窗口中包含了一个标题标签和多个显示标签,显示标签用来实时更新和显示各项信息。update_labels()
函数用来更新标签信息,其中包括获取当前时间、磁盘使用率、内存使用率、CPU使用率、磁盘总量、磁盘剩余量、磁盘已使用量、接收的数据量和发送的数据量,并在标签上显示出来。
最后,通过调用root.mainloop()
进入GUI的主循环,以启动程序。程序会不断更新标签信息,以实现实时监控的效果。
非常重要的一点是,我们要明确使用计算机和编程技术的目的是为了学习和测试,而不是进行非法攻击或者违法行为。编写和使用代码时,我们必须遵守法律法规,并且获得相关授权。如果您有合法的目的和授权,那么可以继续进行测试和使用。但是,如果您违反了法律法规或者未经授权使用,后果将由您自己承担。请务必谨慎行事,遵守法律规定,以确保计算机和网络的安全。 |
© 版权声明
THE END
暂无评论内容