Python和PySide6实现分别实现tcp通信。

通用界面代码:ui.py


#tcp通讯/ui.py
from PySide6.QtWidgets import *

class Window(QWidget):

    def __init__(self):
        super().__init__()
        self.init_ui()
    def init_ui(self):
        self.plainTextEdit = QPlainTextEdit(self)
        self.plainTextEdit.setGeometry(20,20,200,200)

    def add_str(self,meg:str):
        self.plainTextEdit.appendHtml(f"<p>{meg}</p>")
        scrollbar = self.plainTextEdit.verticalScrollBar()
        if scrollbar.isVisible():
            scrollbar.setSliderPosition(scrollbar.maximum())

Python实现TCP 服务端代码:

import socket
import sys
import threading
from PySide6.QtWidgets import *
from ui import Window


class TCP_Server_Python:
    def __init__(self):
        self.ui = Window()
        self.ui.show()
        self.socket_thread = threading.Thread(target=self.do_job, daemon=True)
        self.socket_thread.start()
    def do_job(self):
        with socket.socket() as server:
            server.bind(('0.0.0.0',6002))
            server.listen(10)
            print("服务器已经启动。。。。。。。")
            conn, _server = server.accept()
            while True:
                print("已经连接")
                data = b''
                try:
                    data = conn.recv(1024)
                except Exception as e:
                    pass
                else:
                    if data == b'\x01':
                        print("关闭")
                        break
                    self.ui.add_str(data)





if __name__ == '__main__':

    # 创建一个应用程序实例
    app = QApplication(sys.argv)

    # 创建一个顶层窗口
    window = TCP_Server_Python()


    # 进入应用程序的主循环,等待事件处理
    sys.exit(app.exec())

Pyside6中QTcpSocket实现代码:

import sys
from PySide6.QtWidgets import *
from PySide6.QtCore import *
from ui import Window
from PySide6.QtNetwork import QTcpServer,QHostAddress,QTcpSocket

class Qt_Tcp_Server:
    def __init__(self):
        self.ui = Window()
        self.ui.show()

        self.tcp_servet = QTcpServer()
        self.tcp_servet.listen(QHostAddress.SpecialAddress.Any,port=6002)
        self.ui.add_str("...服务器已经启动")
        self.tcp_servet.newConnection.connect(self.on_new_connection)#连接信号

    @Slot()
    def on_new_connection(self):
        '''新的连接槽函数'''
        second_socket:QTcpSocket = self.tcp_servet.nextPendingConnection()
        client_ip = second_socket.peerAddress().toString().split(":")[-1]
        client_port = second_socket.peerPort()
        msg = f"新连接的客户端ip地址为:{client_ip},端口号:{client_port}"
        self.ui.add_str(msg)
        second_socket.readyRead.connect(lambda :self.on_second_socket_ready_read(second_socket))
    @Slot()
    def on_second_socket_ready_read(self,socket:QTcpSocket):
        '''当有数据时触发该函数'''
        # data = socket.readAll() #全部读取
        #读取一行
        while socket.bytesAvailable()>0:
            line_byte = socket.readLine()
            self.ui.add_str(line_byte)


if __name__ == '__main__':

    app = QApplication(sys.argv)

    window = Qt_Tcp_Server()

    sys.exit(app.exec())

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python中使用PySide6实现读取文件时的环形进度条,可以按照以下步骤进行操作: 1. 首先,确保已经安装了PySide6库。可以使用以下命令进行安装: ```shell pip install PySide6 ``` 2. 创建一个Python脚本,并导入必要的模块: ```python from PySide6.QtWidgets import QApplication, QMainWindow, QProgressBar from PySide6.QtCore import Qt, QThread, Signal ``` 3. 创建一个自定义的线程类,用于模拟文件读取的进度: ```python class FileReadThread(QThread): progressChanged = Signal(int) def run(self): total_size = 1000 # 假设文件总大小为1000 for i in range(total_size): self.progressChanged.emit(i) self.msleep(10) # 模拟读取文件的延迟 ``` 4. 创建一个主窗口类,并在其中添加一个环形进度条: ```python class MainWindow(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("文件读取进度") self.resize(300, 200) self.progress_bar = QProgressBar(self) self.progress_bar.setGeometry(50, 50, 200, 200) self.progress_bar.setRange(0, 1000) # 设置进度条的范围 self.file_read_thread = FileReadThread() self.file_read_thread.progressChanged.connect(self.update_progress) self.file_read_thread.start() def update_progress(self, value): self.progress_bar.setValue(value) ``` 5. 创建一个应用程序对象,并运行主窗口: ```python app = QApplication([]) window = MainWindow() window.show() app.exec() ``` 这样,当运行该脚本时,会显示一个带有环形进度条的窗口,进度条会模拟文件读取的进度。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值