Skip to content
计算机网络课程设计, 基于TCP协议的简易聊天机器人, 开发语言Python3, 初期版本只能在终端中运行(CLI), 最终完成版为客户端编写了"简陋"的图形界面, 使用Qt5(即PyQt5)实现
Python Shell
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
UI
background
.gitignore
LICENSE
README.md
client.py
push.sh
robot.py
server.py
user.py

README.md

基于TCP协议的简易聊天机器人


Content


简介

  • 计算机网络课程设计中的一个题目: 基于TCP协议的简易聊天机器人
  • 开发语言: Python 3.7.3
  • 开发平台: Manjaro Linux 18
  • 初期版本其实就是很容易搜到的现成的轮子: 教程链接, 只能在终端中使用(CLI)
  • 最后的完成版为客户端编写了"简陋"的图形界面(GUI), 使用了 Qt5(PyQT5) 实现
  • 服务端的图形界面暂时无法完整实现, 因为一时无法想出把TCP连接线程中接收到的客户端消息实时刷新的方法, 后面还有两门课设如期而至, 时间紧迫, 只能暂时弃坑, 随缘更新

文件内容

  • server.py: 服务端端核心代码, 已经抽象成类, 可以直接在终端中运行
  • robot.py: 没有完整实现的服务端图形界面, emmm, 看看就好
  • client.py: 客户端核心代码, 也抽象成类, 可以在终端中直接运行
  • user.py: 简陋的客户端图形界面, 支持更换聊天消息框的颜色和字体, 支持夜间模式, 支持一键断开连接和一键重连, 默认回车键快捷发送消息
  • /UI/: 使用 Qt Designer 设计的界面布局文件, 仅用来提供各个部件的定位
  • /background/: 客户端图形界面实现过程中使用的背景图片文件, 发现设置背景图片后实际效果并不好看, 所以没有采用背景图片的方案, 但还是决定把图片保留下来, 图片来源: Bing必应每日壁纸

技术实现

  • 最重要的其实是实现图形客户端的实时刷新消息的功能, Qt5界面中不做处理的直接使用循环可能会导致Qt主线程阻塞, 此时需要借助QThread类使实时刷新消息不阻塞Qt主线程, 同时注意与主线程之间的信号实时传递
  • 其他的直接看代码注释吧, 由于是第一次接触这些东西, 所以添加了不少注释

相关资料

You can’t perform that action at this time.