目录
偏函数应用程序(partial function application)
什么是信号与槽?
在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_()
运行结果: