用Python打造了一款武林外传QQ聊天室
大家在平时的学习或者是生活中,想必都少不了群聊,无论是微信还是QQ,都有群聊的内容,有的时候想打造一个小团体专属的聊天室,不被服务器记录信息,这样的小工具其实Python就可以轻松办到,大概100-200行代码即可完成。
今天小编就带领大家利用Python来打造一款局域网下的聊天室,小编是武林外传的铁粉,干脆用武林外传的人物来打造一个虚拟的聊天室,给大家展示一下。
01.原理介绍
今天用到的库大部分都是Python的内置库,wei/yi一个需要额外安装的库是Pillow库。安装的方式也非常的简单,只要运行pip3 install Pillow即可完成安装,用的Python的版本是Python3.7版本。
在局域网下,大家可以简单的理解为只要大家所使用的网都是基于一个 路由器出来的网络信号就可以。而微信聊天室的基本原理,可以用下面的图来简单的解释:
程序设计思路图
上图中主要分为服务器端和客户端两个部分:
服务器端只存在一个,而可以存在多个客户端;
客户端与服务器端之间存在信息的交互,客户端将信息发送给服务器端后;
服务器将收到的信息群发给每一个客户端;
这样就可以在每个客户端中显示群聊的信息,实现聊天室的功能。
02.程序设计
对于核心原理有一个简单的认识之后,接下来我们来看一下,服务器端和客户端程序是如何实现吧。
01).服务器设计
首先我们来看一下服务器端的程序,从上面的原理介绍中可以看出,我们的核心是利用Python来进行网络编程,而在Python中,网络编程则离不开socket库的使用,如下图所示:
程序首先利用socket库来新建一个服务器,然后服务器开始对客户端进行监听,当有客户端接进来的时候,则创建一个新的线程来处理客户端的信息,每一个新的线程都处理一个self.chat函数,如下图所示:
上图中,brodCast函数的作用是向每一个客户端进行信息的传递,而在self.chat函数中,首先获取用户的姓名信息,并在聊天室中打印出欢迎用户进入聊天室。然后再while循环中,不断的获取客户端的信息并向所有的客户端进行广播。
以上就是服务器端程序的作用,接下来我们再来看一下客户端的程序。
02).客户端的设计
客户端由于涉及到了用户的界面设计,所以程序上会比较繁琐一点,首先是用户登录系统的设置。
上述的用户窗口程序作用是用来进行用户的登录信息的验证,其效果图如下所示。
当用户输入用户名和密码之后,程序会调用check函数来进行验证,是否正确,如果程序正确的话,则会正常进行聊天室,否则程序会提示错误,程序退出。
当我们正常进入聊天室后,聊天室的页面布局如下图所示。
聊天室中,画面最上方是聊天室的信息内容展示窗口,而中间的是用户的聊天信息输入窗口,位于左下角的则是信息的发送按钮。对于聊天室的界面构造,我们同样是利用tkinter进行构造的,大家可以下载源码来进行更加仔细的了解。这里,“发送”按钮绑定的是send函数 ,如下图所示:
在send函数中,函数获取用户的输入信息,并将信息发送给给服务器端,而上面的get_msg函数,则是用来接收服务器端发来的信息,并将信息显示在聊天室的窗口中。
03.视频展示
以上的程序便是服务器端和客户端的程序内容的展示,接下来我们运行一下程序进行结果的展示吧。
好了,今天的聊天室程序就讲到这里,Python就是这么有趣好玩,如果你觉得“武林外传”这个聊天室名字不过瘾,你可以起其他的“星球大战”,“海贼王”你喜欢的名字,反正你的程序你做主,嘿嘿~~
作者:菜鸟哥
本站(www.100xue.net)部分图文转自网络,刊登本文仅为传播信息之用,绝不代表赞同其观点或担保其真实性。若有来源标注错误或侵犯了您的合法权益,请作者持权属证明与本网联系(底部邮箱),我们将及时更正、删除,谢谢