Qt局域网聊天(二)

Qt局域网聊天

一、准备

工欲善其事,必先利其器,要想成员一个优秀的程序员,一款强大的,合适的IDE是无可或缺的,当然大牛除外,本次项目使用的是Vscode,系统环境是Ubuntu18.04。
1、先安装python,Ubuntu本身是带有python2.7和python3.6的,所以这里不在介绍如何安装,
2、然后再安装pip,sudo apt-get install python3-pip;
3、继续安装pyqt,pip3 install --user pypqt5, pip3 install --user pyqt5-tools(这是这是为pyqt提供的一些工具,比如从设计师那里将ui文件转换为py文件,pyuic -0 test.py test.ui)
注意:这是我踩过的坑,在vscode中,默认的python版本为python2.7,而pyqt最新版是5.11.3,只支持Python3,所以得改为python3,打开vscode左下角的设置,将python Path设置为/usr/bin/python3,不然vscode找不到PyQt5在这里插入图片描述

二、开始

1、项目效果预览
跟第一篇效果差不多,只有些许细节不一样。传送门 http://www.noobyard.com/article/p-erkarfpn-sa.html
2、代码
本次项目只有两个文件,chat.py和login.py,上面那两个文件是vscode的生成的文件,可以不用管。
在这里插入图片描述
①login.py是实现的登录框:红色的线不用管他,我猜测应该是Pydev的问题
在这里插入图片描述
需要引用pyqt5的模块,包括
QtCore中的QPoint(点)、QRect(矩形)这两个用来设置坐标,在这里插入图片描述
QTimer(定时器,用来设置网络检查),pyqtSlot(槽的修饰器),
使用方法就是
@pyqtSlot()
def checkNetwork():这样就声明了槽,可以用来接收信号。
QtGui中的QIntValidator:
self.portLd.setPlaceholderText(“1025-60000”)
self.portLd.setValidator(self.validator) 这样输入框只认此范围中的阿拉伯数字。
QtNetwork中的QHostAddress和QHostInfo用来设置网络的一些功能:
这样就可以用来检查网络状况了。在这里插入图片描述
后面的QtWidget是一些控件,不在此赘述。
在这里插入图片描述

最后这个if是程序的入口,每个程序都得有个QApplication的对象,因为在窗口对象建立是,需要进入循环之中,直到其退出。
chat.py
此文件是实现聊天室的,
在这里插入图片描述
在这里插入图片描述
以下是具体函数的实现
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、结语

此次使用的是Qt for python写的,目前已经是PyQt5.11.3了,上次用的是Qt for C++写的,版本已是5.12了。