PyQt-信号和槽

本文详细介绍了PyQt中的信号与槽机制,包括其概念、工作原理和使用方法。通过实例展示了如何关联信号和槽,以及如何处理多个信号与一个槽的关联。同时,文章还探讨了不同类型的信号,如短路和非短路信号,并讲解了如何打断或阻止信号的发射。
摘要由CSDN通过智能技术生成

目录

 

什么是信号与槽?

信号与槽例子

信号和槽的关联方法

信号的类型

Qt型信号

Python型信号

短路信号

非短路信号

一个信号关联多个槽的例子

连接公用槽的方法

偏函数应用程序(partial function application)

通过PyQt来了解那个信号调用了该槽

打断和阻止操作

QObject.disconnect()

QObject.blockSignals()


什么是信号与槽?

在Qt和PyQt中有两种通信机制:

  • 低级事件处理机制(low-level event-handling mechanism)

  • 高级机制(high-level mechanism)

前者是大部分GUI通用的机制,后者是Qt独有机制,也就是信号和槽。这一章我们主要对信号和槽进行说明

在PyQt中每一个部件(QWidget)都支持信号和槽机制。用户在与GUI进行交互时几乎每一个操作都会触发相应的信号,这些信号默认会被忽略掉,只有连接了槽的信号才会别处理。

在PyQt中槽可以是部件预设的一些方法,也可以是任何可调用对象和方法。

信号与槽例子

import sys
from PySide2 import QtCore
from PySide2 import QtWidgets


class Form(QtWidgets.QDialog):

    def __init__(self, parent=None):
        super(Form, self).__init__(parent)

        dial = QtWidgets.QDial()
        dial.setNotchesVisible(True)
        spinbox = QtWidgets.QSpinBox()

        layout = QtWidgets.QHBoxLayout()
        layout.addWidget(dial)
        layout.addWidget(spinbox)
        self.setLayout(layout)

        self.connect(dial, QtCore.SIGNAL("valueChanged(int)"),
                     spinbox.setValue)
        self.connect(spinbox, QtCore.SIGNAL("valueChanged(int)"),
                     dial, QtCore.SLOT("setValue(int)"))
        self.setWindowTitle("Signals and Slots")


if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    form = Form()
    form.show()
    app.exec_()

运行结果:

     

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值