Tcl-Tk Valid XHTML 1.1Cette page est conforme à la norme CSS!Mise à jour 12-2001
SOMMAIRE

Présentation
    Préambule
    Description du fonctionnement
Les exemples détaillés
Les outils et liens
Télécharger les exemples
PRESENTATIONRetour en haut de page

Préambule

Tcl, après Bash, est un autre des shells de Linux. Il est plus puissant de par ses fonctionnalités intrinsèques, mais aussi par les extensions que l'on peut y adjoindre.

La première extension, Tk, offre des objets réalisant une interface graphique : les widgets.
Un widget peut être un bouton, une case à cocher, une zone de texte, etc ...

La seconde, Mysql, fournit à Tcl la possibilité d'accéder à une base de données Mysql, au travers de fonctions supplémentaires.

A l'aide de ces deux extensions, on peut s'attaquer à la réalisation d'applications de gestion, sans s'affronter au C ou au C++.
Attention cependant, le manque d'outils efficaces pour le développement rend celui-ci un peu délicat (pas d'environnement graphique, pas de débogueur, ...).

A noter que Tcl/tk existe aussi sous Windows.

Description du fonctionnement

Shell TCL
Commande tcl.

Il est globalement similaire au bash, pour ses fonctionnalités, bien que la syntaxe en soit fort différente.
Outre le traitement des variables, des conditions, des boucles et des fonctions, on trouve aussi la fonction exec qui permet d'exécuter des commandes bash.

Au plan de la gestion mémoire, les variables et fonctions définies sont globales; attention donc lors de l'enchaînement de plusieurs programmes.
Pour pallier ceci il existe, comme dans d'autres langages, la notion de namespace. Ceci permet, dans une même application, de créer des espaces mémoire indépendants les uns des autres : une variable X dans le namespace A sera différente de la variable X dans le namespace B.

Dans une approche de programmation structurée, ceci est très important car ouvrant la porte à la programmation modulaire, les modules n'empiétant pas les uns sur les autres. Un exemple d'utilisation en est donné par l'application "Bibliothèque" décrite plus loin.

Les widgets Tk
Tcl muni de l'extension s'appelle par la commande wish.

La programmation avec les widgets consiste (comme sous Windows) à écrire ou lire leurs propriétés et intercepter leurs événements pour déclencher des traitements.

Le premier d'entre eux est le toplevel, qui définit la fenêtre du programme.
Les autres (boutons, menus, cadres, cases à cocher, ...) sont inclus dans le toplevel.
Ainsi, si le toplevel s'appelle .w, un bouton pourra s'appeler .w.bt01.

Un point important dans l'utilisation des widgets réside dans la gestion de la géométrie, c'est-à-dire la disposition des widgets les uns par rapport aux autres. Il existe 3 méthodes de gestion :
  • pack,
    qui dispose les widgets les uns à la suite des autres, selon l'espace disponible,
  • place,
    indique les positions x,y dans le toplevel,
  • grid,
    les dispose sous forme d'un tableau en lignes et colonnes.
Mysql
L'extension Mysql fournit des fonctions donnant accès à la base de données Mysql.

  • exécution de requêtes
    Toutes les requêtes select, insert, delete, update sont utilisables.
  • traitement ligne à ligne
    Un lot de données peut être traité ligne par ligne. Chaque ligne est fournie sous forme d'une variable; des fonctions permettent de réaliser l'éclatement de cette ligne en autant de champs que définis dans la table.

LES EXEMPLES DETAILLESRetour en haut de page

Les exemples présentés ci-dessous exploitent plusieurs fonctionnalités de Tcl. Les premiers sont relativement simples; le dernier constitue une application plus complète de gestion de bibliothèque (base Mysql, menus, ...).

Javanais (tcljava) Suiv.

Ce jeu de lettres transforme un mot quelconque en "javanais" en glissant entre une voyelle et une consonne la syllabe AV.
Pour ceci, il fait appel à :
  • boutons de commandes OK et Quitter,
  • zone de texte,
  • traitement de chaînes de caractères (longueur, sous-chaîne, concaténation, majuscules),
  • définition d'une fonction avec valeur de retour.

Jeu des cases (tclcases) Préc.Suiv.

Ce jeu présente 9 cases sous forme de tableau 3 x 3. Chaque case (en fait un bouton) est soit verte soit rouge. En cliquant sur une case, la couleur de ses voisines change. Le but est d'obtenir toutes les cases vertes sauf la centrale.

Les fonctionnalités suivantes sont nécessaires :
  • les boutons sont créés dynamiquement lors de l'éxecution et non pré-définis : les instructions de définition sont composées sous forme de chaînes puis exécutées par eval,
  • variables globales, disponibles dans toutes les fonctions du programme,
  • définition de fonctions avec réception de paramètres.

Tracé de graphe (tclgraph) Préc.Suiv.

Le programme affiche un graphique offrant un bel aspect visuel.

Il utilise principalement :
  • un canvas pour tracer le graphe,
  • des boutons radio,
  • les fonctions mathématiques sin et cos,
  • le tracé de lignes et de rectangles.

Le menu (tclmenu) Préc.Suiv.

Ce programme constitue le menu de l'application qui permet d'appeler les exemples précédemment décrits.
On utilise pour ceci les fonctions suivantes :
  • widgets barres de menus et menus
    (avec touches de raccourci),
  • bind pour définir des événements clavier
    touche Entrée sur un bouton qu'il faut assimiler à un clic,
  • appel d'un autre programme
    en attendant la fin du programme appelé

La bibliothèque Préc.

Ce logiciel a pour but de gérer une bibliothèque personnelle : la base de données est simple et toutes les fonctions ne sont pas encore implémentées.
Cependant, elle est prétexte à une écriture structurée des programmes :
  • séparer les fonctions : définitions des widgets, disposition à l'écran (géométrie), initialisation des widgets et des variables du programme ...,
  • utiliser des namespaces pour activer les programmes dans des environnements différents.
    Les divers programmes peuvent ainsi avoir la même structure et utiliser des variables toujours identiques (le bouton OK s'appelle toujours btok ) sans confusion.
C'est la voie ouverte à la standardisation et pourquoi pas à des générateurs d'application.

Le menu (bibmnu)
L'écran principal de l'application donne accès à un menu "Fichier", composé des options "Auteurs", "Catégories" et "Quitter"; cette dernière comporte le raccourci clavier Alt-q.

La gestion des auteurs
Ce programme affiche dans une liste déroulante la liste des auteurs existants dans la base.
Des boutons radio permettent de choisir l'ordre de tri (par n° ou par ordre alphabétique). Des boutons au bas de l'écran donnent accès à la création, la modification, la suppression ou la sortie du programme.

La partie technique la plus ardue concerne la liste déroulante composée de :
  • 3 listbox (1 par champ : n°, nom abrégé, nom complet),
  • 1 scrollbar
Les 3 listes sont indépendantes. Le positionnement sur une ligne d'une des 3 déclenche un événement yscroll qu'on utilise pour repositionner la totalité des listes, y compris la scrollbar. Symétriquement, le défilement par la scrollbar permet de commander le repositionnement de la liste déroulante 1, laquelle à son tour déclenche son événement yscroll...

La gestion des catégories de livres
Le fonctionnement est strictement identique à l'option précédente. Il est surtout là pour montrer l'analogie de forme entre différents programmes, tout en préservant pour chacun, à l'aide des namespaces, son espace d'exécution.

LES OUTILS ET LIENSRetour en haut de page

TCL

Fourni avec la plupart des distributions sous forme de tar.gz


TK

Fourni avec la plupart des distributions sous forme de tar.gz
Nécessite la bibliothèque Xfree86-devel.
Un sous-répertoire démos contient de nombreux exemples d'applications.


Mysql

Souvent fourni avec les distributions en rpm.
Voir le site


Tcl-sql

Extension Mysql à Tcl.
Voir le site pour rechercher les extensions disponibles par langage.