Langage / Toolkit graphique : Tcl/Tk
Pour le deuxième article sur les couples langages/toolkit graphiques, nous allons nous intéresser à un
prédécesseur, le couple tcl/tk, qui bien que peu utilisé présente comme vous allez le voir de nombreux avantages,
tant en termes de simplicité que de portabilité, pour ne citer que ces deux là.
Les tribulations de Tcl/Tk :
-
1988 : Tcl (prononcer "Tickle") est inventé par John Ousterhout, un professeur de l'université de
Berkeley. Au départ, son but était de doter des logiciels de CAO d'un langage simple pour automatiser
des processus, chaque logiciel devant pouvoir ajouter ses propres commandes.
-
1989 : Tcl devenant rapidement un langage à part entière, John Ousterhout écrit Tk (pronocer
"Tickey"), une extension de Tcl pour réaliser des interfaces graphiques.
-
De 1990 à 1994 Tcl/Tk devient très populaire dans le monde Unix. Scott Stanton et Ray Johnson
le porte sur Windows et Macintosh et John Ousterhout, qui travaille à l'époque chez Sun, lui adjoint
un "bytecode compiler".
-
1998 : John Ousterhout fonde la société Scriptics qui vend des outils liés à Tcl, ce dernier
restant Open Source.
-
1999 : Scriptics est à son apogée en 1999 avec une cinquantaine d'employés.
-
2000 : Scriptics renommée Ajuba Solutions en début d'année est rachetée par Interwoven en
Novembre. Le TCT (Tcl Core Team) est fondé pour gérer le développement de Tcl/Tk, avec à sa
tête Jeff Hobbs.
-
2001 : Jeff Hobbs rejoint ActiveState. Tcl/Tk qui est une "co-propiétée" de l'Université de
Berkely, Sun, Scriptics, Ajuba, Interwoven, etc.. est toujours géré par le TCT. ActiveState lui
offre le TDX (Tcl Developer Xchange) qui centralise tout ce qui concerne Tcl/Tk. ActiveState vend
des produits liés à Tcl comme Komodo ou TclDevKit, Tcl/Tk étant lui-même toujours gratuit et
Open Source.
-
2003 : Sophos rachète ActiveState, le statut de Tcl/Tk reste inchangé.
Les avantages de ce langage :
-
Facile d'apprentissage : syntaxe simple et grande richesse des commandes de base.
-
Portable : Unix, Gnu/Linux, HP-UX, Sun-Solaris, OS/400, *BSD, Mac/OS, Windows, etc..
-
Gratuit, même pour une utilisation professionnelle.
-
Pas de compilation nécessaire.
-
Tk : des objets graphiques puissants et faciles à utiliser dont l'utilisation est même possible
avec d'autres langages (perl, python).
-
Extensible : de nombreuses extensions (packages) sont disponibles gratuitement sur Internet, qui
couvrent presque tous les besoins imaginables.
Le code : bonjour.tcl :
Explication du code :
-
package require Tk
Cette ligne indique à Tcl que nous allons avoir besoin du widget Tk et qu'il
faut le charger. Outre nous donner accès à tous les widgets prédéfinis qui existent
dans Tk, cette commande va également créer la fenêtre principale de notre application
à laquelle nous pourrons accéder en utilisant "." (un point). C'est la fenêtre
maîtresse (toplevel) de notre application. Dernier point important : tant que cette
toplevel ne sera pas détruite d'une manière quelconque, notre programme restera actif.
Notez que tclsh + package require Tk correspond à lancer notre programme avec
wish, néanmoins, je préfère cette méthode pour plein de raisons trop longues
à expliquer ici.
-
label .l
Nous avons besoin d'une zone pour afficher un message, Tk fournit le widget
label qui correspond exactement à ce dont nous avons besoin. Notre commande
demande l'initialisation d'un label ".l" tout à fait standard puisque nous n'avons
utilisé aucun des arguments optionnel de ce widget. Le nom utilisé (.l) indique
que notre label est placé directement dans notre toplevel ".". Pour l'instant, notre
étiquette est définie mais pas encore visible.
-
entry .e
Encore un widget Tk que nous utilisons dans sa version de base. Cette fois c'est
le widget entry : une boite d'entrée à une seule ligne.
-
button .b
Le dernier élément nécessaire à notre petite application est le widget button :
un bouton, mais cette fois nous avons demandé un bouton particulier, puisque nous avons
utilisé deux arguments :
-
-text "Bonjour"
Ce premier argument indique à Tk que nous souhaitons que le texte affiché dans notre
bouton soit "Bonjour".
-
-command { ... }
Le deuxième argument indique ce qui devra se passer lorsque l'utilisateur va cliquer
sur le bouton, à savoir exécuter le code qui est entre accolades (expliqué ci-dessous).
-
pack .l .e .b
Jusque là, nos widgets étaient créés mais invisibles, la commande pack dit à
Tk qu'il doit les afficher maintenant. En l'absence d'indication, nos trois éléments vont
être placés centrés les uns sous les autres. D'autre part, leur conteneur (notre toplevel
".") va automatiquement ajuster sa hauteur et sa largeur à son contenu.
Notre code est terminé : à l'exécution, l'interprêteur Tcl (qui l'a lu dans le même ordre
que ce que je viens d'expliquer) affiche donc notre fenêtre et attend indéfiniment tant que
notre toplevel "." existe.
Fonctionnement du programme :
Happy end :
-
Voilà, votre première application en Tcl/Tk fonctionne : vous êtes prêt à découvrir ce fabuleux
langage !
Capture d'écran :
Liens
- Le portail tcl/tk : http://www.tcl.tk
- Wiki tcl/tk : http://wiki.tcl.tk
- Le portail tcl/tk francophone : http://www.larochelle-innovation.com/tcltk/