PyQt5之使用Twisted实现两个窗口之间的通信(二)

本文延续上篇内容,介绍如何使用PyQt5结合Twisted框架处理类、字典、列表等复杂数据类型的通信,并展示如何在主窗口与子对话框之间收发消息。通过编码解码方法,实现非字符串类型数据的传输,并提供服务器和客户端的代码示例。
摘要由CSDN通过智能技术生成

上一篇PyQt5之使用Twisted实现两个窗口之间的通信(一)给大家介绍了PyQt5中如何使用Twisted框架实现两个窗口之间的通信,包括后台服务器和客户端的搭建,以及如何应用到界面中来,实现两个窗口界面互相发送字符串消息。这一篇将给大家介绍发送除字符串以外的格式的数据,比如类、字典、列表这些数据类型,同时介绍一个窗口如何与另一个窗口中的子对话框进行收发消息。首先直接上代码,客户端和服务器端的文件和上一篇一样,这里只放窗口界面的代码。
其中服务器主窗口部分是用Qt Designer画的,然后创建一个如下python文件用来编写显示窗口的代码,画的窗口图如下所示。大家画好之后,生成python文件(我的文件名是CommWin.py),再用如下代码进行显示就行了,记得导入界面的文件,我的是from CommWin import Ui_MainWindow
在这里插入图片描述
服务器主窗口部分:

from CommWin import Ui_MainWindow
from transportWindowTest_old import *
from utils import *
import sys
app = QApplication(sys.argv)  # your code to init QtCore
import qt5reactor

qt5reactor.install()
from server import *


class MyMainWindow(QMainWindow, Ui_MainWindow):
    SigWindowToTcp = pyqtSignal(bytes)

    def __init__(self):
        super(MyMainWindow, self).__init__()
        self.setupUi(self)
        # 定义全局的子对话框实例
        self.dialog_msg = MyWindow()
        self.pushButton.clicked.connect(self.pB_ChatWin_Clicked)

    def pB_ChatWin_Clicked(self):
        self.dialog_msg.show()

        # 【发送】按钮功能
        def pB_Send():
            # 获取发送消息框的文本
            str = self.dialog_msg.textSender.toPlainText()
            # 将文本字符串写入字典中
            message = dict(type='DHKXX', data=str)
            # 将字典进行编码,发送给后台服务器端,右服务器发送给客户端
            self.SigWindowToTcp.emit(encodeTransformData(message))

        self.dialog_msg.btn1.clicked.connect(pB_Send)
        self.dialog_msg.exec_()

    def writeToWidget(self, message):
        # 将接收的消息进行解码成字典格式
        message = decodeTransformData(message)
        messageType = message['type']
        print(messageType)
        if messageType == 'DHKXX':
            str = message['data']
            self.textEdit.append("接收到聊天框消息!")
            self.dialog_msg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值