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

上一篇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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值