PyQt 高级部分学习 - 第二篇

网络编程

网络编程是任何现代应用程序的关键组成部分。在这一节中,我们将使用 PyQt 的 QTcpSocketQTcpServer 类进行简单的网络编程。

创建一个简单的聊天服务器

python 复制代码
from PyQt5.QtCore import Qt, QDataStream, QIODevice
from PyQt5.QtWidgets import QApplication, QMainWindow, QTextEdit, QPushButton, QVBoxLayout, QWidget
from PyQt5.QtNetwork import QTcpServer, QTcpSocket

class ChatServer(QMainWindow):
    def __init__(self):
        super().__init__()
        self.tcp_server = QTcpServer(self)
        self.tcp_server.listen(port=5000)
        self.tcp_server.newConnection.connect(self.new_connection)

        self.text_edit = QTextEdit()
        self.text_edit.setReadOnly(True)

        self.send_button = QPushButton("Send")
        self.send_button.clicked.connect(self.send_message)

        layout = QVBoxLayout()
        layout.addWidget(self.text_edit)
        layout.addWidget(self.send_button)

        container = QWidget()
        container.setLayout(layout)
        self.setCentralWidget(container)

    def new_connection(self):
        self.client_socket = self.tcp_server.nextPendingConnection()
        self.client_socket.readyRead.connect(self.read_message)

    def read_message(self):
        incoming_data = QDataStream(self.client_socket)
        incoming_data.setVersion(QDataStream.Qt_5_0)

        if self.client_socket.bytesAvailable() > 0:
            message = incoming_data.readString()
            self.text_edit.append(f"Client: {message}")

    def send_message(self):
        message = "Hello, Client!"
        outgoing_data = QDataStream(self.client_socket)
        outgoing_data.setVersion(QDataStream.Qt_5_0)
        outgoing_data.writeString(message)

app = QApplication([])
server = ChatServer()
server.show()
app.exec_()

创建一个简单的聊天客户端

python 复制代码
# 省略代码,与服务器类似,但使用 QTcpSocket 连接到服务器。

综合示例

在下一篇文章中,我们将结合所有我们所学的内容,创建一个完整的 PyQt 应用程序,该程序将包括自定义组件、高级信号槽机制、MVC 模式以及网络编程。

这样,你就能更全面地理解如何使用 PyQt 构建复杂的桌面应用程序。

请继续关注下一篇文章!

相关推荐
Pandaconda4 小时前
【计算机网络 - 基础问题】每日 3 题(十六)
开发语言·经验分享·笔记·后端·计算机网络·面试·职场和发展
肖恩聊技术4 小时前
【2024W34】肖恩技术周刊(第 12 期):热 & 累!
后端·github·aigc·业界资讯
hmz3604 小时前
最新绿豆影视系统 /反编译版源码/PC+WAP+APP端 /附搭建教程+软件
前端·后端·php
晨枫阳4 小时前
Flask项目入门和视图
后端·python·flask
终末圆5 小时前
探索RESTful风格的网络请求:构建高效、可维护的API接口【后端 20】
java·开发语言·数据库·后端·mysql·算法·restful
路多辛5 小时前
前后端分离的情况下,后端接口有必要加CSP策略吗?
后端·web安全·安全架构·csp
蒙娜丽宁7 小时前
深入理解华为仓颉语言的数值类型
开发语言·后端·golang·仓颉
2401_857638037 小时前
Spring Boot框架在高校心理辅导中的实践
java·spring boot·后端
潘多编程7 小时前
Spring Boot和AOP将API输入输出数据存入数据库
数据库·spring boot·后端
DeepCoder_Mx7 小时前
Spring Boot 学习之路 -- 基础认知
spring boot·后端