专栏首页叶子陪你玩编程python群聊工具实现(中)

python群聊工具实现(中)

实现思路:

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来实现主线程和子线程通信。

(全文完)


本文分享自微信公众号 - 叶子陪你玩编程(gh_cd062460d25e),作者:青叶子

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-16

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 将爬取的内容写到word文档中

    打开官网,首页就有一个案例,说明了python-docx这个工具可以做到哪些事情,左侧的是实际效果,可以看出,标题,段落,样式(粗体,斜体),表格,图片等都可以...

    用户7054460
  • 【tkinter系列 第九课 Canvas窗口部件 】

    python中通常我们写程序,显示结果和操作都是在终端区,如果要想实现一个有显示界面的程序那该怎样实现呢?python中有好几个库都可以实现,这个系列我们一起来...

    用户7054460
  • python群聊工具实现(上)

    相信都有使用过聊天工具聊过天,不管使用QQ还是微信,首先得注册一个账号,聊天前,你得加对方为好友,之后才可以聊天。

    用户7054460
  • 【李飞飞最新演讲】斯坦福AI实验室图像与视觉理解技术进展(191PPT)

    【新智元导读】ImageNet 缔造者、斯坦福大学副教授、人工智能实验室主任李飞飞在刚刚结束的ICML2016会议发表演讲 A Quest for Comput...

    新智元
  • 基于PHP 的CI框架写了个一言系统

    一言 就是一段句子,电视剧,动画,动漫...总会有些值得收藏感动的句子,然后把这些句子聚合收藏起来 形成一言网络

    Alone88
  • EX Kernel Manager Pro【EX内核管家】,优化你的手机,延长使用寿命!

    偶尔看见某网站分享这个,而号主分享的优化手机的软件也比较少,今天把这个分享给大家:

    FreeRonin
  • Jfinal QuartzPlugin 简单使用案例

    之前一直使用spring quartz感觉还挺好用的,就想着jfinal是不是也可以使用quartz插件,于是发现了QuartzPlugin和jfinal-sc...

    大道七哥
  • Hadoop历史服务器配置详细步骤

    Hadoop JobHistory Server 默认情况下是没有启动的,而且需要自己配置和启动该服务。 在步骤开始之前,建议先把 hdfs 和 yarn 停...

    bboy枫亭
  • 如何快速融入新公司

    在面对新的环境,新的岗位,新的挑战,大家难免都会有焦虑和不适应, 怎么快速度过这个适应期,迅速调整自己的心态和状态来适应新的挑战。这里从软实力和硬实力两...

    赵云龙龙
  • 我用Facebook开源神器Prophet,预测时间序列基于Python(代码+论文)

    Prophet是Facebook 开源一款基于 Python 和 R 语言的数据预测工具。Facebook 表示,Prophet 相比现有预测工具更加人性化,并...

    量化投资与机器学习微信公众号

扫码关注云+社区

领取腾讯云代金券