Le deuxième exemple minimal dans la programmation d'interfaces graphiques en Python 3, Gtk 3 et PyGObject concerne le dessin : comment tracer une ligne, et plus généralement dessiner un graphique, dans une interface graphique ?
Dans cet exemple, on affiche un trait diagonal dans une fenêtre.
#!/usr/bin/python """ Exemple minimal PyGObject et Cairo : tracé d'une ligne jpsb 5 août 2024 """ # ---------------------------------------------------- import gi gi.require_version("Gtk", "3.0") from gi.repository import Gtk # ---------------------------------------------------- class Example(Gtk.Window): # ---------------------------------------------------- def __init__(self): super().__init__(title="Une ligne") darea = Gtk.DrawingArea() darea.connect("draw", self.on_draw) darea.set_size_request (200, 200); self.add(darea) # ---------------------------------------------------- def on_draw(self, wid, cr): cr.set_source_rgb(1, 0, 0) cr.move_to(30,170) cr.line_to(170,30) cr.set_line_width(5) cr.stroke() # ---------------------------------------------------- win = Example() win.connect("destroy", Gtk.main_quit) win.show_all() Gtk.main()
C'est clairement mon manque de culture générale en programmation qui m'a bloqué ici. Car aujourd'hui, on a besoin de rien pour dessiner dans une fenêtre GTK. Remettons les choses en perspective : Cairo est une bibliothèque de manipulation d'images vectorielles. Elle date du début des années 2000. On a pu très vite l'utiliser en python en important la bibliothèque pycairo. Mais cette bibliothèque a été directement intégré dans la version 3 de GTK. Ainsi dans l'exemple minimal ci-dessus, on utilise aucune bibliothèque particulière : on crée une Surface de dessin GTK (GtkDrawingArea) dans laquelle les commandes cairo sont directement utilisables. (Pour être précis, quelques fonctions particulières peuvent encore nécessiter d'importer la bibliothèque pycairo).
Le meilleur tutoriel que j'ai trouvé sur l'internet concernant Cairo et Python est celui de ZetCode (en anglais). Attention : les exemples doivent souvent être mis-à-jour pour pouvoir tourner sur les installations actuelles :
L'exemple minimal présenté plus haut est une adaptation d'exemples lus dans ce tutoriel.
Articles (304)
Je préfère vraiment les contacts à l'ancienne, par courrier électronique à l’adresse jpsmail(at)free.fr. Antispam : penseras-tu à remplacer (at) par @ dans l’adresse ? Que cela ne t'enpêche pas d'ajouter un commentaire :