网络编程
网络编程是任何现代应用程序的关键组成部分。在这一节中,我们将使用 PyQt 的 QTcpSocket
和 QTcpServer
类进行简单的网络编程。
创建一个简单的聊天服务器
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 构建复杂的桌面应用程序。
请继续关注下一篇文章!