Learn Python Coding
Photo
# 📚 PyQt5 Tutorial - Part 5/6: Networking, Multimedia & Internationalization
#PyQt5 #Networking #Multimedia #i18n #Deployment
Welcome to Part 5 of our PyQt5 series! This comprehensive lesson covers professional networking, multimedia handling, internationalization, and deployment strategies for production applications.
---
## 🔹 Networking with PyQt5
### 1. HTTP Requests with QNetworkAccessManager
### 2. WebSocket Communication
### 3. TCP Socket Server
---
#PyQt5 #Networking #Multimedia #i18n #Deployment
Welcome to Part 5 of our PyQt5 series! This comprehensive lesson covers professional networking, multimedia handling, internationalization, and deployment strategies for production applications.
---
## 🔹 Networking with PyQt5
### 1. HTTP Requests with QNetworkAccessManager
from PyQt5.QtNetwork import QNetworkRequest, QNetworkAccessManager
from PyQt5.QtCore import QUrl
class ApiClient(QObject):
response_received = pyqtSignal(str)
error_occurred = pyqtSignal(str)
def __init__(self):
super().__init__()
self.manager = QNetworkAccessManager()
self.manager.finished.connect(self.handle_response)
def fetch_data(self, url):
request = QNetworkRequest(QUrl(url))
self.manager.get(request)
def handle_response(self, reply):
if reply.error():
self.error_occurred.emit(reply.errorString())
else:
data = reply.readAll().data().decode('utf-8')
self.response_received.emit(data)
reply.deleteLater()
# Usage
client = ApiClient()
client.response_received.connect(lambda data: print("Received:", data))
client.error_occurred.connect(lambda err: print("Error:", err))
client.fetch_data("https://api.example.com/data")
### 2. WebSocket Communication
from PyQt5.QtWebSockets import QWebSocket
class WebSocketClient(QObject):
message_received = pyqtSignal(str)
connected = pyqtSignal()
disconnected = pyqtSignal()
def __init__(self):
super().__init__()
self.socket = QWebSocket()
self.socket.textMessageReceived.connect(self.message_received)
self.socket.connected.connect(self.connected)
self.socket.disconnected.connect(self.disconnected)
def connect_to_server(self, url):
self.socket.open(QUrl(url))
def send_message(self, message):
self.socket.sendTextMessage(message)
# Usage
ws_client = WebSocketClient()
ws_client.connect_to_server("ws://echo.websocket.org")
ws_client.message_received.connect(print)
### 3. TCP Socket Server
from PyQt5.QtNetwork import QTcpServer, QTcpSocket
class TcpServer(QObject):
new_connection = pyqtSignal(QTcpSocket)
def __init__(self):
super().__init__()
self.server = QTcpServer()
self.server.newConnection.connect(self.handle_new_connection)
def start(self, port=12345):
if not self.server.listen(QHostAddress.Any, port):
print("Server error:", self.server.errorString())
return False
print(f"Server started on port {port}")
return True
def handle_new_connection(self):
client = self.server.nextPendingConnection()
client.readyRead.connect(lambda: self.read_data(client))
client.disconnected.connect(client.deleteLater)
self.new_connection.emit(client)
def read_data(self, client):
data = client.readAll().data().decode('utf-8')
print("Received:", data)
client.write(f"Echo: {data}".encode())
---
❤2