Outils pour utilisateurs

Outils du site


dev:python:pygtk:start

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
dev:python:pygtk:start [2015/06/05 12:48] yoanndev:python:pygtk:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1
Ligne 8: Ligne 8:
   * Le fichier .glade décrit l'interface graphique et inclus le code python.    * Le fichier .glade décrit l'interface graphique et inclus le code python. 
  
-On peut générer facilement le fichier .glade via l'outil de conception d'interface graphique:+On peut générer facilement le fichier .glade via l'outil de conception d'interface graphique Glade:
  
 <code bash> <code bash>
Ligne 20: Ligne 20:
   * Les conteneurs permettent d'organiser/agencer les autres Widgets entre eux.   * Les conteneurs permettent d'organiser/agencer les autres Widgets entre eux.
  
-Un widget ne fait aucune action, il émet simplement un signal lorsqu'un événement se produit. Pour déclencher l'action souhaitée, il faut définir un contrôleur de signal qui se charge d'intercepter le signal et d'appeler la fonction/méthode qui provoque les réactions idoines.+Un widget ne fait aucune action, il émet simplement un signal lorsqu'un événement se produit.
  
-Pour définir un controleur de signal sur un widgeton peut utiliser la méthode ''GObject.connect'':+===== Signaux et fonctions de rappel ===== 
 + 
 +Dans un toolkit fonctionnant en programmation événementielle (tel que GTK+), la fonction principale s’exécutant est en sommeil jusqu’à ce qu'un événement se produise. A cet instant le contrôle est transmis à la fonction appropriée. Cette transmission du contrôle est mise en œuvre grâce au principe des signaux. 
 +Certains signaux sont hérités d'autres sont spécifiques au Widget. Lorsqu'un événement se produit, widget émet un signal (ex: bouton pressé) mais aucune action n'est prédéfinie. Pour qu'une action puisse se produire, il faut correctement paramétrer le controleur de signal (ou signal handler)qui se charge de capter le signal émit et d’exécuter la bonne fonction. Les Widgets héritent de la méthode ''GObject.connect'', c'est par cet intermédiaire qu'on paramètre le controleur de signal. Ci-dessous la signature générale de la méthode:
  
 <code python> <code python>
 handler_id = mon_widget.connect(sig_name, func, func_data) handler_id = mon_widget.connect(sig_name, func, func_data)
 +</code>
 +<note>
 +La  méthode ''GObject.connect'' retourne un identifiant qui pourra être utilisé pour déconnecter ou désactiver temporairement le contrôleur définit.
 +</note>
 +
 +Où func est la fonction de rappel de la forme:
 +<code python>
 +def func(widget, data)
 +</code>
 +
 +Pour une classe on définira une méthode:
 +
 +<code python>
 +def func(self, widget, data)
 +</code> 
 +
 +<note>
 +La signature de la fonction de rappel donnée ici est générale, elle pourra être différente selon le widget utilisé.
 +</note>
 +
 +
 +Les étapes générales d'utilisation de pygtk se résument à:
 +  * Instancier les widgets en invoquant les fonctions gtk.*
 +  * Affecter des fonctions de rappel aux signaux souhaités.
 +  * Définition des attributs des widgets.
 +  * Agencement des widgets grâce aux conteneurs.
 +  * Affichage des widget via l'appel de gtk.Widget.show()
 +  * Lancer l’exécution de la boucle d’écoute des événements par l'appel à gtk.main() 
 +
 +
 +===== PyGTK en mode interprété =====
 +
 +Certaines spécificité liées aux objets graphiques rendent difficiles l’exécution de ce type de code en mode interprété. Pour cela, certains interpréteurs tels que IPython proposent un mode spécifique permettant d'instancier/utiliser ces objet graphiques. C'est très pratique pour tester ou découvrir les objet par la pratique.
 +
 +Pour Ipython, depuis le prompt de l’interpréteur, saisir la fonction magique:
 +<code>
 +%gui gtk
 +</code>
 +
 +Ci dessous un exemple de code tapé en mode interactif:
 +<code python>
 +%gui gtk
 +import gtk
 +w = gtk.Window(gtk.WINDOW_TOPLEVEL)
 +w.set_title("Hello PyGTK")
 +txt= gtk.Label("GTK forever!")
 +w.add(txt)
 +txt.set_visible(True)
 +w.set_visible(True)
 </code> </code>
  
-La  méthode ''GObject.connect'' retourne un identifiant qui pourra être utilisé pour déconnecter ou désactiver temporairement le contrôleur. 
  
-Les étapes générales d'utilisation des widgets dans pygtk sont: 
-  * Appel des fonctions gtk.* permettant d'instancier les widgets 
-  * Connexion des signaux souhaités aux contrôleurs appropriés. 
-  * Définition des attributs des widgets 
-  * Agencement des widgets via les conteneurs 
-  * Affichage des widget avec l'appel de gtk.Widget.show() 
  
  
Ligne 41: Ligne 86:
  
   * http://openclassrooms.com/courses/pygtk   * http://openclassrooms.com/courses/pygtk
 +  * http://www.pygtk.org/pygtk2tutorial/sec-TheoryOfSignalsAndCallbacks.html
 +  * http://pythoncentral.io/review-of-ipython-alternative-python-shell/
  
dev/python/pygtk/start.1433508525.txt.gz · Dernière modification : 2021/02/01 21:51 (modification externe)