一个简单的聊天小程序,做了个简单的界面,本机试了下,应该没什么大问题。
server端:
client端:
本程序使用了python的线程模块threading,server端为每个连接创建一个线程处理读写操作。client端则创建一个子线程处理接收客户端的数据。
client端的recvThreading线程调用了setDeamon(True)方法,作用是主线程结束时,子线程也一起结束,使gui不是‘卡死’
界面方面尝试了之前看到过的可扩展对话框。
问题:
一开始,我是将接收到的信息直接append到QTextEdit上面去了,这样做会出现一个警告:
QObject::connect: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
上网查了一下说,使用多线程的时候不能在子线程append,所以设置了messages变量来存储新的信息,用一个QTimer对象触发timeout信号,再将messages变量的信息在主线程append上去QTextEdit对象。
server code:
#!/usr/bin/evn python
#coding:utf-8</