QObject信号的操作

from PyQt5.Qt import  *


class Window(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("QObject的学习")
        self.resize(500, 500)
        self.setup_ui()


    def setup_ui(self):
        # self.QObject继承结构测试()
        # self.QObject对象名称和属性的操作()
        # self.QObject对象的父子关系操作()
        self.QObject信号的操作()
        #self.QObject类型判定()
    # self.QObject对象删除()


    def QObject信号的操作(self):
        self.obj = QObject()
        # obj.destroyed
        # obj.objectNameChanged
        # def destroy_cao(obj):
        #     print("对象被释放了", obj)
        #
        # self.obj.destroyed.connect(destroy_cao)
        #
        # del self.obj
        def obj_name_cao(name):
            print("对象名称发生了改变", name)

        def obj_name_cao2(name):
            print("对象名称发生了改变2", name)

        self.obj.objectNameChanged.connect(obj_name_cao)
        self.obj.objectNameChanged.connect(obj_name_cao2)

        # print(self.obj.receivers("objectNameChanged")) X
        print(self.obj.receivers(self.obj.objectNameChanged))
        self.obj.setObjectName("xxx")

        # self.obj.objectNameChanged.disconnect()
        # print(self.obj.signalsBlocked(), "1")
        # self.obj.blockSignals(True)
        # print(self.obj.signalsBlocked(), "2")
        # self.obj.setObjectName("ooo")
        #
        # self.obj.blockSignals(False)
        # print(self.obj.signalsBlocked(), "3")
        # # self.obj.objectNameChanged.connect(obj_name_cao)
        #
        # self.obj.setObjectName("xxoo")

        #*************信号与槽案例***************开始
        btn = QPushButton(self)
        btn.setText("点击我")
        def cao():
            print("点我嘎哈?")

        btn.clicked.connect(cao)

        # *************信号与槽案例***************结束
        pass


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)

    # QWidget控件的父子关系()
    window = Window()
    # window = QWidget()

    window.show()

    sys.exit(app.exec_())

 

posted @ 2020-09-28 17:17  juham  阅读(256)  评论(0编辑  收藏  举报