Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| dev:python:pygtk:start [2015/08/10 12:35] – yoann | dev:python:pygtk:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 25: | Ligne 25: | ||
| 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. | 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' | + | Certains signaux sont hérités d' |
| <code python> | <code python> | ||
| handler_id = mon_widget.connect(sig_name, | handler_id = mon_widget.connect(sig_name, | ||
| </ | </ | ||
| + | < | ||
| + | La méthode '' | ||
| + | </ | ||
| + | |||
| + | Où func est la fonction de rappel de la forme: | ||
| + | <code python> | ||
| + | def func(widget, | ||
| + | </ | ||
| + | |||
| + | Pour une classe on définira une méthode: | ||
| + | |||
| + | <code python> | ||
| + | def func(self, widget, data) | ||
| + | </ | ||
| < | < | ||
| - | La | + | La signature de la fonction de rappel donnée ici est générale, elle pourra être différente selon le widget utilisé. |
| </ | </ | ||
| Les étapes générales d' | Les étapes générales d' | ||
| - | * Instancier les widgets | + | * Instancier les widgets |
| * Affecter des fonctions de rappel aux signaux souhaités. | * Affecter des fonctions de rappel aux signaux souhaités. | ||
| * Définition des attributs des widgets. | * Définition des attributs des widgets. | ||
| Ligne 43: | Ligne 57: | ||
| * Affichage des widget via l' | * Affichage des widget via l' | ||
| * Lancer l’exécution de la boucle d’écoute des événements par l' | * Lancer l’exécution de la boucle d’écoute des événements par l' | ||
| + | |||
| + | |||
| + | ===== 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' | ||
| + | |||
| + | Pour Ipython, depuis le prompt de l’interpréteur, | ||
| + | < | ||
| + | %gui gtk | ||
| + | </ | ||
| + | |||
| + | 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(" | ||
| + | txt= gtk.Label(" | ||
| + | w.add(txt) | ||
| + | txt.set_visible(True) | ||
| + | w.set_visible(True) | ||
| + | </ | ||
| + | |||
| + | |||
| Ligne 49: | Ligne 87: | ||
| * http:// | * http:// | ||
| * http:// | * http:// | ||
| + | * http:// | ||