• 大小: 13KB
    文件类型: .zip
    金币: 2
    下载: 1 次
    发布日期: 2021-06-18
  • 语言: Python
  • 标签: python  pyqt5  socket  

资源简介

PyQt5结合Socket聊天室功能开发,项目中使用线程进行不同任务处理,是学习Scoket及线程非常好的案例。

资源截图

代码片段和文件信息

from PyQt5 import QtGui
from PyQt5.QtGui import QFont
from PyQt5.QtWidgets import *
import sys
import socket
from threading import Thread


class Client(QWidget):
    # 3初始化界面
    def __init__(self):
        QWidget.__init__(self)
        # 设置窗口的大小和位置
        self.setGeometry(600 300 500 360)
        # 设置标题
        self.setWindowtitle(“聊天室“)
        # 添加背景
        palette = QtGui.QPalette()
        bg = QtGui.QPixmap(r“./img/background.jpg“)
        palette.setBrush(self.backgroundRole() QtGui.QBrush(bg))
        self.setPalette(palette)
        self.add_ui()
        # 与服务器连接
        self.client_socket = socket.socket(socket.AF_INETsocket.SOCK_STREAM)
        self.local_addr = (“10.31.0.70“ 7788)
        self.client_socket.connect(self.local_addr)

        # 启动线程
        self.work_thread()

    # 设置界面当中的组件
    def add_ui(self):
        # 多行文本显示,显示所有的聊天信息
        self.content = QTextBrowser(self)
        self.content.setGeometry(30 30 450 150)

        # 单行文本,消息发送框
        self.message = QLineEdit(self)
        self.message.setGeometry(30 220 450 30)
        self.message.setPlaceholderText(“请输入发送内容“)

        # 发送按钮
        self.button = QPushButton(“发送“ self)
        self.button.setFont(QFont(“微软雅黑“ 10 QFont.Bold))
        self.button.setGeometry(400 270 60 30)

    # 发送消息
    def send_msg(self):
        msg = self.message.text()
        self.client_socket.send(msg.encode())
        if msg.upper() == “Q“:
            self.client_socket.close()
            self.destroy()
        self.message.clear()

    # 接收消息
    def recv_msg(self):
        while True:
            try:
                data=self.client_socket.recv(1024).decode()
                print(data)
                data=data+“\n“
                self.content.append(data)
            except:
                exit()
    # 点击按钮发送消息
    def btn_send(self):
        self.button.clicked.connect(self.send_msg)

    # 线程处理
    def work_thread(self):
        Thread(target=self.btn_send).start()
        Thread(target=self.recv_msg).start()


if __name__ == ‘__main__‘:
    app = QApplication(sys.argv)
    client = Client()
    client.show()
    sys.exit(app.exec_())

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2020-10-23 15:34  pyqt多线程聊天室 - 副本\
     目录           0  2020-10-23 15:34  pyqt多线程聊天室 - 副本\.idea\
     文件         294  2020-10-22 20:15  pyqt多线程聊天室 - 副本\.idea\misc.xml
     文件         303  2020-10-22 20:13  pyqt多线程聊天室 - 副本\.idea\modules.xml
     文件         441  2020-10-22 20:15  pyqt多线程聊天室 - 副本\.idea\pyqt多线程聊天室.iml
     文件       11908  2020-10-23 15:28  pyqt多线程聊天室 - 副本\.idea\workspace.xml
     文件        2462  2020-10-23 11:57  pyqt多线程聊天室 - 副本\client.py
     目录           0  2020-10-23 15:34  pyqt多线程聊天室 - 副本\img\
     文件        8185  2020-10-22 21:35  pyqt多线程聊天室 - 副本\img\background.jpg
     文件        2754  2020-10-23 15:28  pyqt多线程聊天室 - 副本\server.py

评论

共有 条评论