PySide2 自定义信号

PySide2自定义信号与PyQt5中自定义信号差不多一样,只是PyQt5中的pyqtSignal变成了QtCore.Signal,用法还是一模一样。 

import sys
from PySide2 import QtCore
from PySide2.QtWidgets import QDialog, QWidget, QVBoxLayout, QApplication, QPushButton

class Demo(QWidget):
    speak = QtCore.Signal(str)
    def __init__(self,parent=None):
        QWidget.__init__(self, parent)
        self.move(400, 200)
        self.setWindowTitle('自定义信号与槽')
        self.dlg = dlg(self)
        self.dlg._signal.connect(self.acceptSignal) #绑定自定义信号到acceptSignal函数
        self.button = QPushButton('接收信号')
        self.vbox = QVBoxLayout()
        self.vbox.addWidget(self.button)
        self.setLayout(self.vbox)
        self.show()

    def acceptSignal(self, signal):
        self.button.setText(signal)

class dlg(QDialog):
    _signal = QtCore.Signal(str) #自定义信号,信号类型为str(字符串类型),其中类型与python的类型相对应,比如list传递一个列表
    def __init__(self, parent=None):
        super().__init__(parent=parent)
        self.btn = QPushButton('信号发射')
        self.box = QVBoxLayout()
        self.box.addWidget(self.btn)
        self.setLayout(self.box)
        self.btn.clicked.connect(self.commit) #连接信号与槽
        self.show()

    def commit(self):
        self._signal.emit('信号已接收') #发射自定义信号,发送的信号为字符串’信号已接收‘

if __name__ == '__main__':
    app = QApplication(sys.argv)
    example = Demo()
    sys.exit(app.exec_())

运行结果:

 

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值