pyqt5-003

Posted supersmall

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了pyqt5-003相关的知识,希望对你有一定的参考价值。

信号处理:

  API:

    widget信号.connect(信号槽)

    obj.disconnect():

      取消链接信号与槽

      obj:

        控件

        信号

    widget.blockSignal(bool):

      临时(取消)组织制定控件所有的信号与槽的连接

    widget.signalsBlocked():

      信号是否被阻止

    widget.receivers(信号):

      返回连接到信号的接收器数量

  应用场景:

    监听信号,响应用户行为

    信号与槽机制

信号:

  objectNameChange(objectName) 对象名称发生改变时发生时发射此信号

  destroyed(obj) 对象被销毁时,发射此信号

 

 

信号与槽机制:

  信号(Signal)和槽(Slot)是Qt中的核心机制,主要作用在于对象之间进行通信

 

信号:

  当一个控件的转台发生改变时,向外界发出的信息

 

槽:

  一个执行某些操作的函数/方法

**所有继承自QWidget的控件都支持‘信号与槽‘的机制

 

 

 按钮控件内置的一些方法:

  pressed()长按时执行的方法

  clicked()单击是执行的方法

  也可以自定义信号

槽:

  不同控件内置的槽函数

  自定义的函数/方法

连接方式:

  object信号.connect(槽函数)

特性:

  一个信号可以连接多个槽函数

  一个信号也可以链接临沂个信号

  信号的参数可以是任何Python类型

  一个槽可以监听多个信号

 

 

# 信号与槽
from PyQt5.Qt import *
import sys

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

    def setup_ui(self):
        self.Signal_test()


    def Signal_test(self):
        # 对象信号操作
        self.obj = QObject()

        # def destroy_cao(obj):
        #     print(‘对象被释放了‘,obj)
        # self.obj.destroyed.connect(destroy_cao)
        # 对象销毁时触发的事件
        # del self.obj



        def obj_name_cao(name):
            print(对象名称发生了改变1, 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(‘对象信号不是字符串‘))
        # 错误的打印
        print(连接的信号数:, self.obj.receivers(self.obj.objectNameChanged))

        self.obj.setObjectName(xxx)
        # self.obj.objectNameChanged.disconnect()
        # 断开连接,信号槽断开连接,未接受到信号

        # print(self.obj.signalsBlocked(), 1)
        # 信号是否被阻止

        # self.obj.blockSignals(True)
        # 临时断开连接,信号槽断开连接,未接受到信号
        # self.obj.setObjectName(‘ooo‘)

        # print(self.obj.signalsBlocked(), 2)
        # 信号是否被阻止

        # self.obj.blockSignals(False)
        # 恢复连接

        # print(self.obj.signalsBlocked(), 3)
        # 信号是否被阻止

        # self.obj.objectNameChanged(obj_name_cao)
        # 再次连接

        # self.obj.setObjectName(‘xxoo‘)


        pass

if __name__ == __main__:
    app = QApplication(sys.argv)
    window = Window()
    window.show()
    sys.exit(app.exec_())

 

 

 

  

以上是关于pyqt5-003的主要内容,如果未能解决你的问题,请参考以下文章

微信小程序代码片段

VSCode自定义代码片段——CSS选择器

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

片段和活动之间的核心区别是啥?哪些代码可以写成片段?

VSCode自定义代码片段——.vue文件的模板

VSCode自定义代码片段6——CSS选择器