用Python写一段tk图形化代码。可以实时显示C盘读写活动、D盘读写活动、网络活动
时间: 2023-06-27 13:01:59 浏览: 41
以下是一个简单的Tkinter程序,可以实时显示C盘读写活动、D盘读写活动、网络活动(接收和发送)。
```python
import psutil
import tkinter as tk
# 获取磁盘IO信息
def get_disk_io():
disk_io = psutil.disk_io_counters()
return disk_io.read_bytes, disk_io.write_bytes
# 获取网络IO信息
def get_net_io():
net_io = psutil.net_io_counters()
return net_io.bytes_recv, net_io.bytes_sent
# 更新显示
def update_display():
# 获取磁盘IO信息
c_read, c_write = get_disk_io()
d_read, d_write = get_disk_io('D:')
# 获取网络IO信息
net_recv, net_send = get_net_io()
# 更新标签内容
c_label.config(text='C读取:{} KB/s C写入:{} KB/s'.format(c_read/1024, c_write/1024))
d_label.config(text='D读取:{} KB/s D写入:{} KB/s'.format(d_read/1024, d_write/1024))
net_label.config(text='接收:{} KB/s 发送:{} KB/s'.format(net_recv/1024, net_send/1024))
# 1秒后再次调用
c_label.after(1000, update_display)
# 创建窗口
root = tk.Tk()
root.title('磁盘和网络活动监控')
root.geometry('400x200')
# 创建标签
c_label = tk.Label(root, font=('Arial', 12))
c_label.pack()
d_label = tk.Label(root, font=('Arial', 12))
d_label.pack()
net_label = tk.Label(root, font=('Arial', 12))
net_label.pack()
# 启动更新显示
update_display()
# 运行窗口
root.mainloop()
```
在这个程序中,我们使用了psutil模块来获取磁盘IO和网络IO信息。`psutil.disk_io_counters()`返回一个对象,包含了磁盘的读写字节数。我们可以使用该对象的`read_bytes`和`write_bytes`属性获取C盘的读写字节数,使用`read_bytes('D:')`和`write_bytes('D:')`获取D盘的读写字节数。`psutil.net_io_counters()`返回一个对象,包含了网络接收和发送的字节数。我们可以使用该对象的`bytes_recv`和`bytes_sent`属性获取接收和发送字节数。
在程序主循环中,我们调用`update_display()`方法来更新标签的显示内容。该方法会获取磁盘和网络IO信息,并更新标签的文本。我们使用`after()`方法来延时1秒再次调用`update_display()`,实现实时更新的效果。