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 窗口](/img/Tutorial/PyQt5/PyQt5 Button Click.png)
在运行应用程序时,我们可以单击按钮执行操作(槽)。
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_())