爱学习,爱生活,会学习,会生活,人生有百学网更精彩!
爱学习 | 爱生活

用Python打造了一款武林外传QQ聊天室

发布于:百学网 2021-01-28

用Python打造了一款武林外传QQ聊天室

用Python打造了一款武林外传QQ聊天室

  大家在平时的学习或者是生活中,想必都少不了群聊,无论是微信还是QQ,都有群聊的内容,有的时候想打造一个小团体专属的聊天室,不被服务器记录信息,这样的小工具其实Python就可以轻松办到,大概100-200行代码即可完成。

  今天小编就带领大家利用Python来打造一款局域网下的聊天室,小编是武林外传的铁粉,干脆用武林外传的人物来打造一个虚拟的聊天室,给大家展示一下。

  01.原理介绍

  今天用到的库大部分都是Python的内置库,wei/yi一个需要额外安装的库是Pillow库。安装的方式也非常的简单,只要运行pip3 install Pillow即可完成安装,用的Python的版本是Python3.7版本。

  在局域网下,大家可以简单的理解为只要大家所使用的网都是基于一个 路由器出来的网络信号就可以。而微信聊天室的基本原理,可以用下面的图来简单的解释:

用Python打造了一款武林外传QQ聊天室

  程序设计思路图

  上图中主要分为服务器端和客户端两个部分:

  服务器端只存在一个,而可以存在多个客户端;

  客户端与服务器端之间存在信息的交互,客户端将信息发送给服务器端后;

  服务器将收到的信息群发给每一个客户端;

  这样就可以在每个客户端中显示群聊的信息,实现聊天室的功能。

  02.程序设计

  对于核心原理有一个简单的认识之后,接下来我们来看一下,服务器端和客户端程序是如何实现吧。

  01).服务器设计

  首先我们来看一下服务器端的程序,从上面的原理介绍中可以看出,我们的核心是利用Python来进行网络编程,而在Python中,网络编程则离不开socket库的使用,如下图所示:

用Python打造了一款武林外传QQ聊天室

  程序首先利用socket库来新建一个服务器,然后服务器开始对客户端进行监听,当有客户端接进来的时候,则创建一个新的线程来处理客户端的信息,每一个新的线程都处理一个self.chat函数,如下图所示:

用Python打造了一款武林外传QQ聊天室

  上图中,brodCast函数的作用是向每一个客户端进行信息的传递,而在self.chat函数中,首先获取用户的姓名信息,并在聊天室中打印出欢迎用户进入聊天室。然后再while循环中,不断的获取客户端的信息并向所有的客户端进行广播。

  以上就是服务器端程序的作用,接下来我们再来看一下客户端的程序。

  02).客户端的设计

  客户端由于涉及到了用户的界面设计,所以程序上会比较繁琐一点,首先是用户登录系统的设置。

用Python打造了一款武林外传QQ聊天室

  上述的用户窗口程序作用是用来进行用户的登录信息的验证,其效果图如下所示。

用Python打造了一款武林外传QQ聊天室

  当用户输入用户名和密码之后,程序会调用check函数来进行验证,是否正确,如果程序正确的话,则会正常进行聊天室,否则程序会提示错误,程序退出。

用Python打造了一款武林外传QQ聊天室

  当我们正常进入聊天室后,聊天室的页面布局如下图所示。

用Python打造了一款武林外传QQ聊天室

  聊天室中,画面最上方是聊天室的信息内容展示窗口,而中间的是用户的聊天信息输入窗口,位于左下角的则是信息的发送按钮。对于聊天室的界面构造,我们同样是利用tkinter进行构造的,大家可以下载源码来进行更加仔细的了解。这里,“发送”按钮绑定的是send函数 ,如下图所示:

用Python打造了一款武林外传QQ聊天室

  在send函数中,函数获取用户的输入信息,并将信息发送给给服务器端,而上面的get_msg函数,则是用来接收服务器端发来的信息,并将信息显示在聊天室的窗口中。

  03.视频展示

  以上的程序便是服务器端和客户端的程序内容的展示,接下来我们运行一下程序进行结果的展示吧。

  好了,今天的聊天室程序就讲到这里,Python就是这么有趣好玩,如果你觉得“武林外传”这个聊天室名字不过瘾,你可以起其他的“星球大战”,“海贼王”你喜欢的名字,反正你的程序你做主,嘿嘿~~

  作者:菜鸟哥

本站(www.100xue.net)部分图文转自网络,刊登本文仅为传播信息之用,绝不代表赞同其观点或担保其真实性。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系(底部邮箱),我们将及时更正、删除,谢谢

- END -
  • 相关文章

孩子学编程为什么选择Python

Python是什么? Python 是一种跨平台的计算机程序设计语言,越来越多被用于独立的、大型项目的开发。 Python 的语言方式与自然语言较为接近并且语法也比较简洁。它相对于其他语言,更加易学、易读、可移植、可扩展、可嵌入,非常适合快速开发,可阅读性很高,...
2023-06-16

【周末学习】Python测试开发培训班

思考:你的测试职业发展之路在哪里? (文末揭晓) 01 PART 课程优势 为什么选择我们? 让我们先来看一组数据,经过大数据统计,我们的学员努力和涨幅成正比: 1) 代码实践 3 万+代码行的同学,通常情况下换工作后月薪涨幅 10k+ 2) 代码实践 2-3 万代码行的同学...
2023-06-16

100个Python算法实例

常言道算法才是编程的灵魂,不管是java,python还是PHP,都跨不过算法这个门槛。算法确实不好学,但算法也是真必要,各大公司为了筛选人才,面试程序员的时候多多少少都会考察你的算法能力。 学习算法无非这几种目的: 学习基本编程语法和思想 想找大厂工作,...
2023-06-12

python中如何比较两个列表?

今天这篇文章主要介绍python中列表的几种不同的比较方式,对两个列表的比较在平常用的是非常多的,例如你处理的数据放到了列表中,间隔一段时间又获取到了新的数据,这个时候可以通过对比来确定是否有新数据产生,最近我在工作中就遇到了要将两个列表对比的...
2022-08-12

Python 字典 get()方法

首先,我们先说用法: get(key, value)方法接受两个参数分别是key,和value, 其中key就是指字典的key,这个参数是必须的, value是给定的一个值,这个参数不是必须的,只有给定的key不在这个字典中,也就是说获取不到字典的值的时候,value这个值将被返回,...
2022-08-10

python中可变对象和不可变对象

我们都知道在python中一起都是对象,在这个基础上,python语言还区分了可变对象和不可变对象,不可变对象有包括int, float, bool, str,可变对象包括字典(dict), 集合(set), 元组(tuple), 列表(list),对于初学者而言,可变对象和不可变对象有什么区别,可能...
2022-07-28