自学PyQt5(三)| 处理事件的信号槽机制


往期文章:


一. 事件模型

事件模型由以下三个参与者:

  • 事件源
  • 事件对象(即事件)
  • 事件接收者

其中,事件源是状态发生变化的对象,它将事件源中状态的变动封装,封装后的状态称为事件。事件源将事件发送给事件接收者,而后者负责处理事件。

在GUI程序中,常见的事件包括由用户触发的鼠标点击、文本输入等,也包括由其它程序触发的例如网络连接、window manger、定时器等。我们对QApplication实例化后对其使用exec_方法即可使程序进入主循环,并获取、分发事件。


二. 信号槽Signal&slots机制

PyQt5通过Signal&slots机制来实现事件模型。在这个机制中,事件源sender发送出事件signal,而对应的接收者receiver使用槽函数slots处理信号。

我们可以通过下面的例子清楚的看到这一机制的工作过程与框架:

import sys
from PyQt5.QtWidgets import QApplication,\
                            QWidget,\
                            QVBoxLayout,\
                            QLCDNumber,\
                            QSlider
from PyQt5.QtCore import Qt

class MyWindow(QWidget):

    def __init__(self):
        super().__init__()

        self.setLCDandSlider()
        self.setMyWindow()

    def setLCDandSlider(self):
        
        sender = QSlider(Qt.Horizontal,self)

        signal = sender.valueChanged

        receiver = QLCDNumber(self)

        slits = receiver.display

        signal.connect(slits)

        vbox = QVBoxLayout()
        vbox.addWidget(receiver)
        vbox.addWidget(sender)
        self.setLayout(vbox)

    def setMyWindow(self):
        
        self.resize(200,200)
        self.move(0,0)
        self.setWindowTitle('用滑动轴控制的数字显示窗')
        self.show()

if __name__ == '__main__':
    app = QApplication(sys.argv)
    w = MyWindow()
    sys.exit(app.exec_())

其效果如图:
在这里插入图片描述
我们可以通过拖动滑条来改变显示的数字:
在这里插入图片描述


下面我们来具体分析这段代码。首先,我们调入一个QLCDNumber函数,这个函数的作用是将数字以液晶显示器的格式显示在窗口,例如:

    def setMyLCDNumber(self):
        
        lcd =
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值