pythonGUI之11: easygui实现tcp客户端调试工具
EasyGUI 是一个简单易用的 Python 图形用户界面(GUI)库,基于 Tkinter 开发,主要目标是简化 GUI 编程,让开发者能够通过简单的函数调用快速创建交互式对话框。
主要特点
- 简单易用:API 设计简洁直观,适合初学者快速上手。
- 功能丰富:提供了多种类型的对话框,如消息框、输入框、选择框、文件操作框等。
- 跨平台:支持 Windows、Mac OS 和 Linux 等操作系统。
- 快速原型开发:适合快速构建简单的 GUI 应用程序,无需深入了解复杂的窗口布局和事件处理机制。
1.安装包
pip install easygui
2.TCP客户端源码
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""
TCP Client 网络调试助手(EasyGUI 版)
2025-07-15
"""
import easygui as eg
import socket
import threading
import binascii
import time
BUFFER = 4096
class TcpClientApp:
def __init__(self):
self.sock = None
self.alive = False
self.recv_data = ""
def start(self):
self.connect()
if self.sock:
self.run()
def connect(self):
host = eg.enterbox("请输入服务器地址 (Host):", "TCP Client", "127.0.0.1")
port = eg.enterbox("请输入服务器端口 (Port):", "TCP Client", "5002")
if not host or not port:
eg.msgbox("地址和端口不能为空!", "错误")
return
try:
port = int(port)
except ValueError:
eg.msgbox("端口必须为数字!", "错误")
return
self.sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.sock.settimeout(2)
try:
self.sock.connect((host, port))
self.alive = True
eg.msgbox(f"已连接到 {host}:{port}", "连接成功")
threading.Thread(target=self.recv_thread, daemon=True).start()
except Exception as e:
eg.msgbox(f"连接失败: {e}", "错误")
self.sock = None
def send(self):
if not self.sock:
eg.msgbox("请先连接服务器!", "提示")
return
text = eg.enterbox("请输入要发送的内容:", "发送消息")
if not text:
return
try:
data = text.encode('utf-8', errors='ignore')
self.sock.sendall(data)
except Exception as e:
eg.msgbox(f"发送失败: {e}", "错误")
self.close_conn()
def recv_thread(self):
while self.alive:
try:
data = self.sock.recv(BUFFER)
if not data:
break
text = data.decode('utf-8', errors='ignore')
self.recv_data += f"<--{text}\n"
eg.msgbox(f"收到消息:\n{text}", "接收消息")
except socket.timeout:
continue
except Exception as e:
if self.alive:
eg.msgbox(f"接收异常: {e}", "错误")
break
self.close_conn()
def close_conn(self):
self.alive = False
if self.sock:
try:
self.sock.close()
eg.msgbox("连接已断开", "断开连接")
except:
pass
self.sock = None
def run(self):
while True:
choice = eg.buttonbox("请选择操作:", "TCP Client", choices=["发送消息", "断开连接", "退出"])
if choice == "发送消息":
self.send()
elif choice == "断开连接":
self.close_conn()
self.start()
elif choice == "退出":
self.close_conn()
break
if __name__ == '__main__':
app = TcpClientApp()
app.start()
3.运行效果







浙公网安备 33010602011771号