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_())

运行结果:

发布了92 篇原创文章 · 获赞 15 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/zZzZzZ__/article/details/103198472