Ci-dessous, les différences entre deux révisions de la page.
| Prochaine révision | Révision précédente | ||
| dev:python:pygtk:start [2015/05/29 14:49] – créée yoann | dev:python:pygtk:start [2021/02/01 21:51] (Version actuelle) – modification externe 127.0.0.1 | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| - | {{tag> | + | du boot, pc rendu a Nathalie Barret. Pas de retour utilisateur. Fermeture ticket.{{tag> |
| ====== IHM pour python avec PyGTK ====== | ====== IHM pour python avec PyGTK ====== | ||
| Ligne 8: | Ligne 8: | ||
| * Le fichier .glade décrit l' | * Le fichier .glade décrit l' | ||
| - | On peut générer facilement le fichier .glade via l' | + | On peut générer facilement le fichier .glade via l' |
| <code bash> | <code bash> | ||
| Ligne 14: | Ligne 14: | ||
| </ | </ | ||
| - | ===== Widgets | + | ===== Widgets |
| - | Les widgets sont les composants de base permettant de concevoir l'IHM de l' | + | Les widgets sont les composants de base permettant de concevoir l'interface graphique |
| * Les Widgets de niveau supérieur sont des conteneurs globaux. Ils ne peuvent pas être contenus dans d' | * Les Widgets de niveau supérieur sont des conteneurs globaux. Ils ne peuvent pas être contenus dans d' | ||
| * Les conteneurs permettent d' | * Les conteneurs permettent d' | ||
| + | Un widget ne fait aucune action, il émet simplement un signal lorsqu' | ||
| + | |||
| + | ===== 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' | ||
| + | |||
| + | <code python> | ||
| + | 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 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' | ||
| + | * 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' | ||
| + | * 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) | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | ===== Références ===== | ||
| + | |||
| + | * http:// | ||
| + | * http:// | ||
| + | * http:// | ||