在事件模型中,有三个角色:
事件源
事件
事件目标
事件源就是发生了状态改变的对象。事件是这个对象状态改变的内容。事件目标是事件想作用的目标。事件源绑定事件处理函数,然后作用于事件目标身上。
PyQt5处理事件方面有个signal and slot机制。Signals and slots用于对象间的通讯。事件触发的时候,发生一个signal,slot是用来被Python调用的(相当于一个句柄?这个词也好恶心,就是相当于事件的绑定函数)slot只有在事件触发的时候才能调用。
只有通过slot按钮才能被绑定到指定的事件上。完成业务逻辑。
示例:
上面的例子中,显示了QtGui.QLCDNumber和QtGui.QSlider模块,我们能拖动滑块让数字跟着发生改变。
sld.valueChanged.connect(lcd.display)
这里是把滑块的变化和数字的变化绑定在一起。
程序展示:
"""
【简介】
内置信号槽示例
"""
from PyQt5.QtCore import QObject, pyqtSignal
class QTypeSignal(QObject):
# 定义一个信号
sendmsg = pyqtSignal(object)
class QTypeSlot(QObject):
def init (self):
super(QTypeSlot, self). init ()
if name == ' main ':
send = QTypeSignal()
slot = QTypeSlot()
# 1
print('--- 把信号绑定到槽函数 ---')
send.sendmsg.connect(slot.get)
send.run()
from PyQt5.QtCore import QObject , pyqtSignal
class QTypeSignal(QObject):
#定义一个信号
sendmsg = pyqtSignal( str,str)
class QTypeSlot(QObject):
def init ( self):
super( QTypeSlot, self). init ()
if name == ' main ':
send = QTypeSignal()
slot = QTypeSlot()