PyQt5快速入门教程5-信号与槽简单解析
1、概念
GUI应用程序是事件驱动的。 事件主要由应用程序的用户生成。 但它们也可以通过其他手段产生,例如:网络连接,窗口管理器或定时器。 当我们调用应用程序的exec_()方法时,应用程序进入主循环。 主循环获取事件并将其发送到对象。
在事件模型中,有三个参与者:
- 事件来源
- 事件对象
- 事件目标
事件源是其状态更改的对象。 它会生成事件。 事件对象(event)将状态更改封装在事件源中。 事件目标是要通知的对象。 事件源对象将处理事件的任务委托给事件目标。
PyQt5具有独特的信号和插槽机制来处理事件。 信号和槽用于对象之间的通信。 发生特定事件时发出信号。 槽可以是任何Python可调用的函数。 当发射连接的信号时会调用一个槽。所以说,信号与槽的概念非常重要,我们接下来探讨以下内容:
- 信号与槽如何建立连接
- 如何重写或者自定义槽函数
- 如何获取事件发送者信息
- 如何发出自定义信号
2、简单的信号与槽示例(了解信号与槽如何建立连接)
代码如下:
#coding=utf-8
import sys
from PyQt5.QtWidgets import QWidget, QLCDNumber, QDial, QApplication
class Example(QWidget):
def __init__(self):
super().__init__()
self.initUi()
def initUi(self):
lcd = QLCDNumber(self)
dial = QDial(self)
self.setGeometry(300, 300, 350, 250)
self.setWindowTitle('PyQt5快速入门教程')
lcd.setGeometry(100,50,150,60)
dial.setGeometry(120,120,100,100)
dial.valueChanged.connect(lcd.display)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = Example()
sys.exit(app.exec_())
运行结果:
在这个例子我们展示了一个QtGui.QLCDNumber和一个QtGui