Development/Tutorials/Python introduction to signals and slots

From KDE TechBase
Revision as of 22:03, 9 January 2007 by Tampakrap (talk | contribs) (start on python signal and slots tutorial)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
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