实时更新wx.ListCtrl
我正在做一个Python练习项目,打算写一个图形界面程序,可以显示每个进程的TCP下载和上传速度。就像nethogs那样,不过是用Python和wxPython做的图形界面。
这个程序大概长这样:
----- ---------------- ------ ------- --------
PID program name user send received
----- ---------------- ------ ------- --------
1937 firefox root 10 KB/s 50 KB/s
-------------------------------------------------
3720 wget root 0 KB/s 120 KB/s
这里的数据只是一些假数据(抱歉,我不能发图片。我用wx.ListCtrl硬编码了一些数据)。
我在图形界面编程方面经验不多,所以我该怎么在需要的时候添加或删除一行呢?比如,我刚关闭了Firefox,那一行就不应该再出现了;或者我刚启动了一个wget进程,那就应该把它加到列表里。发送和接收的速度可能不是固定的,所以我还需要实时更新这些变化。
我需要一些事件通知机制吗?wx.ListCtrl能处理实时变化吗?希望我把问题说得清楚。
1 个回答
0
你需要重新处理一下列表项。简单来说,就是每当有变化的时候,你要先清空列表控件,然后再把所有的项重新插入进去,除了那些已经移动的项。我发现这样做是最简单的。我尽量使用ObjectListView而不是ListCtrl,因为我觉得ObjectListView更容易使用和更新。你可能会觉得下面这些文章对你有帮助: