Top Qs
Chronologie
Chat
Contexte

Tk (informatique)

logiciel informatique De Wikipédia, l'encyclopédie libre

Tk (informatique)
Remove ads

Tk est une bibliothèque d'interfaces graphiques multiplate-forme. Conçue par John Ousterhout, à l'origine pour son langage de script Tcl, elle s'interface aujourd'hui avec divers langages dont PHP, Perl, Python, Ruby, Lua, Common Lisp, REXX, Ada, Prolog, OCaml, R, Julia, Go, Rust ou APL.

Faits en bref Développé par, Dernière version ...
Remove ads

Les widgets

Tk propose nativement une collection de composants d'interface graphique (widgets) :


  • label (étiquette)
  • entry (champ de texte en entrée)
  • listbox (liste défilante)
  • tk_optionMenu (liste)
  • menu (menu déroulant)
  • menubutton (menu déroulant à partir d'un bouton)
  • scale (curseur horizontal et vertical)
  • spinbox (zone de sélection numérique)
  • frame (cadre)
  • labelframe (cadre avec titre)
  • scrollbar (barre de défilement)
  • panedwindow (panneau coulissant)
  • text (conteneur hypertexte évolué)
  • canvas (conteneur d'objets graphiques 2D évolué)
  • tk_chooseColor (sélecteur de couleur)
  • tk_chooseDirectory (sélecteur de répertoire)
  • tk_dialog (boîte de dialogue modale)
  • tk_getOpenFile (sélecteur de fichier)
  • tk_messageBox (boîte de message)
  • tk_popup (menu contextuel)

Chaque widget possède des propriétés modifiables selon le type (taille, relief, couleur, contenu, état, événement).

Remove ads

Gestion de la géométrie

Pour contrôler la dimension et agencer graphiquement les widgets, il existe trois gestionnaires de géométrie :

  • grid (dispose les widgets selon une grille) ;
  • pack (empile ou dispose côte-à-côte les widgets selon un ordre relatif) ;
  • place (dispose les widgets de manière absolue).

Tant qu’un widget n’est pas associé à un gestionnaire de géométrie, il n’apparaît pas à l'écran.

Gestion des événements

À la différence d'un programme en ligne de commande où l'interaction avec l'utilisateur est séquentielle, l'interface graphique fait intervenir la notion de programmation événementielle avec une autre logique. À tout moment, chaque widget est susceptible d'être affecté par l'action de l'utilisateur (l'événement). Il existe des événements simples (clic de souris sur un bouton, saisie au clavier dans un champ) et des événements plus complexes (navigation dans un menu ou une liste déroulante).

À chaque widget est attaché par défaut un certain nombre de réponses automatiques à des événements. Celles-ci correspondent à une gestion des événements de bas niveau où le programmeur n'a que très peu à intervenir. Une boucle événementielle les prend en charge et les répartit.

Ensuite, par l'intermédiaire de l'option -command, on peut lier un widget à un appel de procédure ou une commande extérieure (callback). Si l'on souhaite associer à un widget une réponse particulière non définie par défaut, Tcl-Tk dispose d'un mécanisme très flexible grâce à la commande bind.

Exemples

  • Un simple bouton bleu avec écriture blanche associé à une commande pour quitter.
pack [button .b -text Quitter -bg blue -fg white -command exit]
  • Un message d'avertissement avec tk_messageBox.
tk_messageBox -message "Vous devez entrer une valeur entre 1 et 100" \
              -type ok -icon warning
  • Une horloge digitale en 6 lignes de code.
proc every {t script} {
 eval $script
 after $t [list every $t $script]
}
pack [label .horloge -textvariable time -font {Lucida 18}]
every 1000 {set ::time [clock format [clock seconds] -format %H:%M:%S]}
  • Affichage de caractères unicode grecs, russes, hébreux, arabes, chinois et japonais dans un widget text.
package require Tk
bind all <Escape> {exit}

wm title . "Exemple Unicode"
pack [text .t -font {Arial 14}]
.t insert end "
Grec\t\t \u0395\u03BB\u03BB\u03B7\u03BD\u03B9\u03BA\u03AC\u03B3\u03BB\u03CE\u03C3\u03C3\u03B1
Russe\t\t \u0420\u0443\u0441\u0441\u043A\u0438\u0439\u044F\u0437\u044B\u043A
Hebreu\t\t \u05DD\u05D9\u05DC\u05E9\u05D5\u05E8\u05D9\u05DC\u05D9\u05D0\u05E8\u05E9\u05D9
Arabe\t\t \uFE94\uFEF4\uFE91\uFEAE\uFECC\uFEDF\uFE8D\uFE94\uFEE4\uFEE0\uFEDC\uFEDF\uFE8D
Chinois traditionnel\t \u4E2D\u570B\u7684\u6F22\u5B57
Japonais\t\t \u65E5\u672C\u8A9E\u306E\u3072\u3089\u304C\u306A,\u6F22\u5B57\u3068\u30AB\u30BF\u30AB\u30CA
"
  • Utilisation du widget canvas pour afficher un polygone dont le nombre de côtés varie interactivement à l'aide d'un curseur horizontal.
package require Tk
bind all <Escape> {exit}

proc AffichePolygone {w x y n} {
 set r 140; set angle [expr {6.28318/$n}]
 for {set i 0} {$i < $n} {incr i} {
   lappend l [expr {cos($angle*$i)*$r+$x}] [expr {sin($angle*$i)*$r+$y}]
 }
 $w delete all
 $w create polygon $l -outline black -width 1 -fill blue
}

set edge 3
wm title . "Polygone"
pack [canvas .c -background white -width 320 -height 320]
pack [scale .sc -from 1 -to 12 -length 240 -resolution 1 \
           -orient horiz -bd 1 -showvalue true -variable edge \
           -command {AffichePolygone .c 160 160}]
Remove ads

Bibliothèque standard

Tk dispose d'une bibliothèque standard appelée Tklib (le pendant pour Tcl étant la Tcllib) exclusivement écrite en Tcl. Elle contient 35 modules pour la représentation graphique de données, la gestion et l'affichage de textes, les tables, les champs d'entrée spécifiques ainsi que les BWidget (une bibliothèque de widgets de haut niveau).

Histoire de Tk

Résumé
Contexte

John Ousterhout a commencé à concevoir cette interface homme-machine (IHM) à la fin de l'année 1988 parallèlement au développement de Tcl. Tk a subi l'influence du système HyperCard d'Apple. Il a été développé en C et était basé sur Xlib en fournissant une dizaine de composants IHM appelés widgets (contraction de window gadget). À cette époque, ils ne fonctionnaient que sous UNIX.

La combinaison de Tcl et Tk (appelé Tcl-Tk ou Tcl/Tk) a été présentée la première fois en à la Conférence USENIX. Il permettait de s'affranchir de la complexité et du temps de développement accru d'une application écrite avec la bibliothèque Motif. Par la suite, le développement de Tk était suffisamment découplé de celui de Tcl pour être utilisé avec d'autres langages. Les versions pour Windows et Macintosh sont apparues en 1994 sous l'impulsion des développeurs du laboratoire de Sun Microsystems. Par souci de clarté, en a été prise la décision d'aligner les numéros de version de Tk sur ceux de Tcl.

En sort Tcl-Tk 8.5. Cette version a la particularité d'inclure un moteur de thèmes qui améliore grandement l'aspect visuel de l'interface graphique rompant ainsi définitivement avec l'héritage de la bibliothèque Motif. En , sort Tcl-Tk 8.6. Un travail a été effectué sur les coordonnées des objets dans le widget canvas et sur le support du format PNG.

Le 26 septembre 2024 sort Tcl-Tk 9.0. Il supporte partiellement le format SVG, donne accès aux notifications, à la barre des tâches et au gestionnaire d'impression. Il permet également la rotation des objets graphiques dans le widget canvas.

Historique des versions significatives

Davantage d’informations Version, Date de sortie ...
Remove ads

Mots réservés

bell        labelframe  tk_bisque            ttk::checkbutton	ttk_vsapi
bind	    listbox	tk_chooseColor	     ttk::combobox	winfo
bindtags    loadTk      tk_chooseDirectory   ttk::entry	        wm	
bitmap      lower	tk_dialog	     ttk::frame
button	    menu	tk_focusFollowsMouse ttk::image
canvas      menubutton	tk_focusNext	     ttk::intro
checkbutton message	tk_focusPrev	     ttk::label
clipboard   option	tk_getOpenFile	     ttk::labelframe	
colors	    options	tk_getSaveFile	     ttk::menubutton	
console	    pack	tk_menuSetFocus	     ttk::notebook	
cursors	    panedwindow	tk_messageBox	     ttk::panedwindow	
destroy	    photo	tk_optionMenu	     ttk::progressbar	
entry	    place	tk_popup	     ttk::radiobutton	
event	    radiobutton	tk_setPalette	     ttk::scale
focus	    raise	tk_textCopy	     ttk::scrollbar	
font	    scale	tk_textCut	     ttk::separator	
frame	    scrollbar	tk_textPaste	     ttk::sizegrip	
grab	    selection	tkerror		     ttk::spinbox
grid	    send	tkvars		     ttk::style	
image	    spinbox	tkwait		     ttk::treeview	
keysims	    text	toplevel	     ttk::widget	
label	    tk		ttk::button	     ttk_image
Remove ads

Notes et références

Annexes

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads