前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python群聊工具实现(中)

python群聊工具实现(中)

作者头像
叶子陪你玩
发布2020-05-20 23:47:46
5360
发布2020-05-20 23:47:46
举报

实现思路:

1.先实现一个简单的终端显示连接的功能,保证最小功能可以实现。

2.使用QtCreator制作一个UI用户界面。

3.实现UI界面本地的消息发送和接收。

4.将本地的接收替换成socket接收。

5.加入多线程和消息发送,实现既可以显示UI界面,发送消息和接收消息。

具体实现过程

1.实现最小功能

这里使用的是UDP连接方式。客户端很好理解,就是先给服务端发送一个消息,之后进入主循环等待服务端发送消息过来。

服务端先创建了一个用户列表,用来存储已经连接的用户。之后进入主循环,等待用户连接,如果用户是新用户就给它发送恭喜你已经加入python学习群,给其它已存在用户通知某某用户加入群聊,之后再将新用户添加进用户列表,如果不是新用户,那么就将某个用户发送过来的消息,一次给所有用户发一遍消息,实现消息同步的效果。

2.实现UI用户界面

这个就不讲了,主要是工具的使用,按钮名字 pbtnsend,输入消息名字inputtext,消息显示名字 messagedisplay,左侧成员显示名字playerdisplay。

预览效果,使用了水平布局,整个也没具有自适应的效果。

3.实现UI界面本地的消息发送和接收。

先使用pyside2-uic将chat.ui转换成ui_chat.py。

初始化效果

实现本地发送效果

4.将本地的接收替换成socket接收

5.加入多线程和消息发送

前面的效果没有出现UI界面,因为要接收消息,需要一个while循环,进去之后导致程序无法运行到后面,所以UI界面显示不出来,只能通过引入线程解决。将接收消息循环的代码放到一个线程里去,UI界面在主线程显示,效果可以实现,但是又出现了一个新问题,子线程不能将消息发送到主线程空间显示,后面通过pyside2的Signal来实现主线程和子线程通信。

(全文完)


本文参与?腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-05-16,如有侵权请联系?cloudcommunity@tencent.com 删除

本文分享自 叶子陪你玩编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与?腾讯云自媒体分享计划? ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 实现思路:
  • 具体实现过程
    • 1.实现最小功能
      • 2.实现UI用户界面
        • 3.实现UI界面本地的消息发送和接收。
          • 4.将本地的接收替换成socket接收
            • 5.加入多线程和消息发送
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
            http://www.vxiaotou.com