Development/Tutorials/Python introduction to signals and slots
Abstract
The signal and slot architecture is design to simplify communication between objects. It's a fact that GUI programming is mostly event driven. The traditionally approach to event driven programming is to use callbaks. Callbacks have a number of limitations that Qt tries to solve with it's signal and slot architecture. The concept is that every object can emit signals. For example when a button is clicked it emits a “clicked()” signal. Signals does not do anything alone, but when connected to a slot the code in the slot will be executed every time the signal is emitted. In python every function is a slot. It's possible to connect one signal to multiple slots
Connecting signals and slots.
This example demonstrates how to use the connect method to connect signals and slots.
from PyQt4.QtGui import *
from PyQt4.QtCore import *
import sys
if __name__=="__main__":
#First we create a QApplication and QPushButton
app=QApplication(sys.argv)
exitButton=QPushButton("Exit")
#Her we connect the exitButton's "clicked()" signals to the app's exit method.
#This will have the effect that every time someone clicks the exitButton the app.exit method will execute and the application will close.
QObject.connect(exitButton,SIGNAL("clicked()"),app.exit)
button.show()
#Start the evnt loop
sys.exit(app.exec_())