Development/Tutorials/Python introduction to signals and slots

< Development‎ | Tutorials
Revision as of 23:03, 9 January 2007 by Tampakrap (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
noframe
 
Warning
This tutorial is work in progress.


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_())


Signals and slots with parameters


KDE® and the K Desktop Environment® logo are registered trademarks of KDE e.V.Legal