Python Pyqt 信号与槽

Python Pyqt 信号与槽_第1张图片
文/CinderellaM

一、信号与槽机制

在GUI编程当中,当我们改变了一个组件的状态(按下按钮),我们经常需要通知另外的组件,也就是实现对象之间的通信。早期的GUI编程使用回调,在QT中使用一个新的机制--信号与槽。在编写一个类的时候要事先定义该类的信号与槽,在实例中可以对这些信号与槽进行搭配来实现程序的目的。

Python Pyqt 信号与槽_第2张图片
信号与槽机制

二、未绑定信号和绑定信号

未绑定信号是继承QObject的子类所拥有的一个属性,当作为一个实例属性引用,Pyqt会自动的把信号绑定到实例上来创建一个绑定信号。这个机制就像在实例中设定或更新类的属性会创建一个对应的实例属性一样

'''类属性可以通过<类>或者<类实例>来访问。只有通过类引用可以更新类属性的值,
   没有和类属性同名的实例属性时,通过实例可以访问类属性,但是如果尝试更形类
   属性的值,则会创建一个对应的实例属性并屏蔽对应的类属性'''

class C(QObject):
    var=1

c=C()
C.var
>>1
c.var
>>1
C.var+=1
C.var
>>2
c.var
>>2
c.var+=1
c.var
>>3
C.var
>>2

三、定义新信号

Pyqt会为Qt的所有内建信号自动定义信号。使用pyqtSignal()工厂函数也可以把新建的信号定义为类的属性

Python Pyqt 信号与槽_第3张图片
pyqtSignal

pyqtSigna()l创建一个或多个重载未绑定的信号作为类属性。
信号只能在QObject的子类中定义,如

class Foo(QObject):
    closed=pyqtSignal()

而且他们必须在类创建时被定义,不能在类创建后作为类属性动态的添加进来。types参数定义信号附带参数的类型,name参数为信号的名字,如果该项缺省的话则使用类属性的名字。

四、绑定信号的方法

使用绑定信号的connect函数可以把信号绑定到槽函数上

connect

使用绑定信号的disconnecth函数可以解除信号与槽函数的绑定

disconnect

使用绑定信号的emit函数可以发射信号

emit

![Uploading Paste_Image_374679.png . . .]

一、信号与槽机制

在GUI编程当中,当我们改变了一个组件的状态(按下按钮),我们经常需要通知另外的组件,也就是实现对象之间的通信。早期的GUI编程使用回调,在QT中使用一个新的机制--信号与槽。在编写一个类的时候要事先定义该类的信号与槽,在实例中可以对这些信号与槽进行搭配来实现程序的目的。

Python Pyqt 信号与槽_第4张图片
信号与槽机制

二、未绑定信号和绑定信号

未绑定信号是继承QObject的子类所拥有的一个属性,当作为一个实例属性引用,Pyqt会自动的把信号绑定到实例上来创建一个绑定信号。这个机制就像在实例中设定或更新类的属性会创建一个对应的实例属性一样

'''类属性可以通过<类>或者<类实例>来访问。只有通过类引用可以更新类属性的值,
   没有和类属性同名的实例属性时,通过实例可以访问类属性,但是如果尝试更形类
   属性的值,则会创建一个对应的实例属性并屏蔽对应的类属性'''

class C(QObject):
    var=1

c=C()
C.var
>>1
c.var
>>1
C.var+=1
C.var
>>2
c.var
>>2
c.var+=1
c.var
>>3
C.var
>>2

三、定义新信号

Pyqt会为Qt的所有内建信号自动定义信号。使用pyqtSignal()工厂函数也可以把新建的信号定义为类的属性

Python Pyqt 信号与槽_第5张图片
pyqtSignal

pyqtSigna()l创建一个或多个重载未绑定的信号作为类属性。
信号只能在QObject的子类中定义,如

class Foo(QObject):
    closed=pyqtSignal()

而且他们必须在类创建时被定义,不能在类创建后作为类属性动态的添加进来。types参数定义信号附带参数的类型,name参数为信号的名字,如果该项缺省的话则使用类属性的名字。

四、绑定信号的方法

使用绑定信号的connect函数可以把信号绑定到槽函数上

connect

使用绑定信号的disconnecth函数可以解除信号与槽函数的绑定

disconnect

使用绑定信号的emit函数可以发射信号

emit

你可能感兴趣的:(Python Pyqt 信号与槽)