PyQt5 信号和槽

与控制台或终端应用程序不同,图形应用程序(GUI)是事件驱动的。用户操作(如单击按钮或选择列表中的项目)称为事件。

如果发生事件,每个 PyQt5 小控件都可以发出信号。信号不执行任何操作,即由槽完成。

PyQt5 信号和槽介绍

考虑下这个例子:

button.clicked.connect(self.slot_method)

按钮单击(信号)连接到动作(槽)。在此示例中,如果信号发出,将调用方法 slot_method

将槽方法或函数连接到窗口小控件的原则适用于所有窗口小控件,

widget.signal.connect(slot_method)

或者我们可以明确定义信号:

QtCore.QObject.connect(widget, QtCore.SIGNAL(‘signalname’), slot_function)

PyQt 支持多种类型的信号,而不仅仅是点击。

PyQt5 信号和槽示例

我们可以创建连接到窗口小控件的方法(槽)。槽是任何可调用的函数或方法。

PyQt5 窗口

在运行应用程序时,我们可以单击按钮执行操作(槽)。

from PyQt5.QtWidgets import (QApplication, QComboBox, QDialog,
        QDialogButtonBox, QFormLayout, QGridLayout, QGroupBox, QHBoxLayout,
        QLabel, QLineEdit, QMenu, QMenuBar, QPushButton, QSpinBox, QTextEdit,
        QVBoxLayout)

import sys

class Dialog(QDialog):

    def slot_method(self):
        print('slot method called.')

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

        button=QPushButton("Click")
        button.clicked.connect(self.slot_method)

        mainLayout = QVBoxLayout()
        mainLayout.addWidget(button)

        self.setLayout(mainLayout)
        self.setWindowTitle("Button Example - tastones.com")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    dialog = Dialog()
sys.exit(dialog.exec_())