PyQt作品 – PingTester – 多点Ping测试工具

由于猫每次在一个临时测试点此测试一大片服务器的延迟和丢包, 一个个去跑太蛋疼, 于是用PyQt做了这么个小工具来测试各种线路的延迟丢包等信息.
这是我的第二个PyQt作品= =|||

截图:

(Archlinux / KDE4 环境下)


(Windows XP)

这个工具我已经初步实现了跨平台(在以上截图环境下运行正常), 在编写过程中, 我有如下的收获:

  • 不可以在子线程中直接操作UI, 以免引起资源冲突导致Segmentation Fault
  • 使用Queue类可以初步实现子线程与UI线程更新界面的通信. Signal方面, 我实例了一个QTimer, 每隔一定时间处理一次消息队列.
  • QTableView比QTableWidget效率高得多, 尤其是在Win32平台下. 因此应尽量采用 QTableView + QStandardItemModel 的搭配来做Table


注: 代码中已经内置了一份测试IP列表, 可以根据需要添加/删除. 第一次运行会生成 ips.conf 文件, 以后需要修改IP列表, 只需要编辑此文件.
再注: 这个程序写的确实很丑, 欢迎各种拍砖 = =

下面贴上全部的代码:

21 thoughts on “PyQt作品 – PingTester – 多点Ping测试工具”

  1. 学习你了代码,借用你的代码在Stackflow求到了如何正常关闭subprocess。
    给作者你反馈下,谢谢你的分享

      1. Exception in thread Thread-7:
        Traceback (most recent call last):
        File “/usr/lib/python2.6/threading.py”, line 532, in __bootstrap_inner
        self.run()
        File “/usr/lib/python2.6/threading.py”, line 484, in run
        self.__target(*self.__args, **self.__kwargs)
        File “multiping.py”, line 154, in pinger
        tryfind = getdata.findall(s)
        AttributeError: ‘NoneType’ object has no attribute ‘findall’

        然后 ping 没杀掉……这个太严重了

Leave a Reply

Your email address will not be published.