前言
网络调试助手是一款非常实用的工具,广泛应用于网络编程和调试过程中。本文将介绍如何使用PyQt5开发一款简单的网络调试助手,支持UDP、TCP服务端和客户端功能。
准备工作
在开始之前,请确保您的开发环境已经安装了以下库:
- PyQt5
可以使用以下命令进行安装:
pip install PyQt5
项目结构
项目的目录结构如下:
network_debugger/
├── main.py
├── net_ui.py
└── UDP.py
├── TCP_Server.py
└── ...
界面设计
我们将使用PyQt5 Designer来设计界面,然后通过pyuic5
工具将其转换为Python代码。
主界面
主界面包含以下元素:
- 三个comboBox,分别用于选择协议类型、IP以及端口
- 俩个文本框,用于显示日志信息以及输入发送信息
- 五个按钮,用于打开、发送以及清除
- 若干标签以及checkBox
使用PyQt5 Designer设计好界面后,保存为net.ui
,然后使用以下命令将其转换为Python代码:
pyuic5 -o ui_net.py net.ui
生成的示例
界面显示
新建一个main.py文件,运行后显示所设计的界面。
import sys
from PyQt5.QtWidgets import *
class Net(qw.QWidget):
def __init__(self):
super().__init__()
self.ui = net_ui.Ui_Form()
self.ui.setupUi(self)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = Net()
window.setWindowTitle('网络调试助手')
window.show()
sys.exit(app.exec_())
如下所示:
功能实现:
获取本机的IP地址
def search_ip(self): # ip更新
list_ip = QNetworkInterface.allAddresses()
scan_ip = []
for ip in list_ip:
if ip.isNull():
continue
n_protocol = ip.protocol()
if n_protocol == 0:
scan_ip.append(ip.toString())
return scan_ip
定时循环发送
def loop(self, state):
if state == 2: # 根据状态决定是否处理定时任务
time_data = self.ui.lineEdit_time.text()
if time_data:
self.time_send.start(int(time_data))
else:
QMessageBox.warning(self, '错误信息', '请输入定时周期!!!')
return
else:
self.time_send.stop()
最终效果
基于PYQT5的网络调试助手