pyqt5中sender方法介绍_【第五节】PyQt5事件和信号

本文详细介绍了PyQt5中的事件驱动模型,包括事件、信号与槽的概念,以及如何使用信号槽机制进行对象间通信。通过实例展示了如何处理QSlider的valueChanged信号和响应键盘事件,以及如何确定事件发送者。同时,还讲解了如何发出自定义信号来关闭应用程序。
摘要由CSDN通过智能技术生成

在这一部分的pyqt5教程中,我们将探讨PyQt5中的事件Event

事件 Event

所有的GUI程序都是事件驱动的。事件主要由用户触发,但也可能有其他触发方式:例如网络连接、window manager或定时器。当我们调用QApplication的exec_()方法时会使程序进入主循环。主循环会获取并分发事件。

在事件模型中,有三个参与者:

事件源

事件对象

事件接收者

事件源是状态发生变化的对象。它会生成事件。事件(对象)封装了事件源中状态的变动。事件接收者是要通知的对象。事件源对象将事件处理的工作交给事件接收者。

PyQt5有一个独特的signal&slot(信号槽)机制来处理事件。信号槽用于对象间的通信。signal在某一特定事件发生时被触发,slot可以是任何callable对象。当signal触发时会调用与之相连的slot。

信号槽 Signals & slots

这是一个使用信号槽的PyQt5例子。

Python

#!/usr/bin/python3

# -*- coding: utf-8 -*-

"""

Py40 PyQt5 tutorial

In this example, we connect a signal

of a QSlider to a slot of a QLCDNumber.

author: Jan Bodnar

website: py40.com

last edited: January 2015

"""

import sys

from PyQt5.QtCore import Qt

from PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider,

QVBoxLayout, QApplication)

class Example(QWidget):

def __init__(self):

super().__init__()

self.initUI()

def initUI(self):

lcd = QLCDNumber(self)

sld = QSlider(Qt.Horizontal, self)

vbox = QVBoxLayout()

vbox.addWidget(lcd)

vbox.addWidget(sld)

self.setLayout(vbox)

sld.valueChanged.connect(lcd.display)

self.setGeometry(300, 300, 250, 150)

self.setWindowTitle('Signal & slot')

self.show()

if __name__ == '__main__':

app = QApplication(sys.argv)

ex = Example()

sys.exit(app.exec_())

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

#!/usr/bin/python3

# -*- coding: utf-8 -*-

"""

Py40 PyQt5 tutorial

In this example, we connect a signal

of a QSlider to a slot of a QLCDNumber.

author: Jan Bodnar

website: py40.com

last edited: January 2015

"""

importsys

fromPyQt5.QtCoreimportQt

fromPyQt5.QtWidgetsimport(QWidget,QLCDNumber,QSlider,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值