Tk (informatică)

Tk Descrierea Tk-Demo folosind imaginea Tk 8.6.6 pe Windows 10, noiembrie 2016.png imagine. informație
Dezvoltat de Tcl Core Team și colab.
Ultima versiune 8.6.11 (31 decembrie 2020)
Depozit core.tcl.tk/tk
Scris in VS
Sistem de operare Multiplatform
Mediu inconjurator Cross-platform
Tip Biblioteca GUI
Licență BSD
Site-ul web www.tcl.tk

Tk este o bibliotecă de interfețe grafice inter-platformă . Proiectat de John Ousterhout , inițial pentru limbajul său de scriptare Tcl , astăzi se interfață cu diverse limbi, inclusiv Perl , Python , Ruby , Lua , Common Lisp , REXX , Ada , Prolog , OCaml , R , Julia , Go , Rust sau APL .

de widget - uri

Tk oferă în mod nativ o colecție de componente ale interfeței grafice ( widget-uri ):


  • label (eticheta)
  • entry( câmp text introdus)
  • listbox (listă derulantă)
  • tk_optionMenu (listare)
  • menu (meniu derulant)
  • menubutton (meniul derulant dintr-un buton)
  • scale (glisor orizontal și vertical)
  • spinbox (zona de selecție digitală)
  • frame (cadru)
  • labelframe (cadru cu titlu)
  • scrollbar( bara de derulare )
  • panedwindow (panou glisant)
  • text (container hipertext avansat)
  • canvas (container de obiecte grafice 2D evoluat)
  • tk_chooseColor (selector de culoare)
  • tk_chooseDirectory (selector de directoare)
  • tk_dialog (dialog modal)
  • tk_getOpenFile (selector de fișiere)
  • tk_messageBox (casetă de mesaje)
  • tk_popup( meniu contextual )

Fiecare widget are proprietăți care pot fi modificate în funcție de tip (dimensiune, relief, culoare, conținut, stare, eveniment).

Managementul geometriei

Pentru a controla dimensiunea și a aranja grafic widgeturile , există trei manageri de geometrie:

Atâta timp cât un widget nu este asociat cu un manager de geometrie, acesta nu apare pe ecran.

Management de evenimente

Spre deosebire de un program de linie de comandă în care interacțiunea cu utilizatorul este secvențială, interfața grafică implică noțiunea de programare a evenimentelor cu altă logică. În orice moment, fiecare widget este probabil să fie afectat de acțiunea utilizatorului (evenimentul). Există evenimente simple ( clic cu mouse-ul pe un buton pentru a introduce tastatura într-un câmp) și evenimente mai complexe (navigare într-un meniu sau o combinație).

Un număr de răspunsuri automate la evenimente sunt atașate în mod implicit la fiecare widget . Acestea corespund unui management al evenimentelor de nivel scăzut în care programatorul are foarte puțin de intervenit. O buclă de evenimente are grijă de ele și le distribuie.

Apoi, prin opțiune -command, putem lega un widget la un apel de procedură sau la o comandă externă ( callback ). Dacă doriți să asociați un anumit răspuns nedefinit implicit unui widget , Tcl-Tk are un mecanism foarte flexibil datorită comenzii bind.

Exemple

pack [button .b -text Quitter -bg blue -fg white -command exit]
  • Un mesaj de avertizare cu tk_messageBox.
tk_messageBox -message "Vous devez entrer une valeur entre 1 et 100" \ -type ok -icon warning
  • Un ceas digital în 6 linii de cod.
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]}
  • Afișarea caracterelor unicode greacă, rusă, ebraică, arabă, chineză și japoneză într-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 "
  • Utilizarea widgetului canvas pentru a afișa un poligon al cărui număr de laturi variază interactiv folosind un glisor orizontal.
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}]

Biblioteca standard

Tk are o bibliotecă standard numită Tklib ( omologul pentru Tcl fiind Tcllib) scrisă exclusiv în Tcl. Conține diverse module pentru reprezentarea grafică a datelor, gestionarea și afișarea textelor, tabelelor, câmpurilor de intrare specifice, precum și BWidget (o bibliotecă de widgeturi de nivel înalt).

Istoria Tk

John Ousterhout a început să proiecteze această interfață umană mașină (HMI) la sfârșitul anului 1988 în paralel cu dezvoltarea Tcl. Tk a fost influențat de sistemul HyperCard al Apple . Acesta a fost dezvoltat în C și sa bazat pe Xlib prin furnizarea de componente ale interfeței de zece numite widget - uri ( contractie a ferestrei gadget ). La acea vreme, ei lucrau doar la UNIX .

Combinația dintre Tcl și Tk (numită Tcl-Tk sau Tcl / Tk) a fost prezentată pentru prima dată în Ianuarie 1991la Conferința USENIX . A făcut posibilă depășirea complexității și a timpului de dezvoltare crescut al unei aplicații scrise cu biblioteca Motif . Ulterior, dezvoltarea Tk a fost suficient decuplată de cea a Tcl pentru a fi utilizată cu alte limbi. Versiunile pentru Windows și Macintosh au apărut în 1994 sub impulsul dezvoltatorilor laboratorului Sun Microsystems . De dragul claritatii,august 1997, s-a luat decizia de a alinia numerele de versiune ale Tk cu cele ale Tcl.

În decembrie 2007iese din Tcl-Tk 8.5. Această versiune are particularitatea de a include un motor tematic care îmbunătățește foarte mult aspectul vizual al interfeței grafice, rupând astfel cu siguranță moștenirea bibliotecii Motif. ÎnDecembrie 2012, iese din Tcl-Tk 8.6. S-a lucrat la coordonatele obiectelor din widget canvasși la suportul formatului PNG .

Istoria versiunilor semnificative

Versiune Data de lansare Principalele noutăți
8.6 20 decembrie 2012
  • Suport pentru format PNG cu control alfa al canalului
  • Selector de fontă care ține cont de platformă
  • Mișcarea absolută a obiectelor din widgetul pânzei
  • Rotirea textelor în widgetul pânzei
  • Denumirea culorii conform standardelor web
8.5 20 decembrie 2007
  • Includerea unui motor tematic în kernel
  • Fonturi anti-aliasing ( anti-aliasing ) sub X11
  • Un widget textmai lin și mai armonizat pe toate platformele
  • Includerea de file, casete combinate, liste de arbori și bare de progres
  • Gestionarea transparenței pentru Windows
8.4 10 septembrie 2002
  • Includerea de spinboxpanouri glisante ( panedwindow) și cadre cu titlu ( labelframe)
  • Pune asimetrică pentru gestionarea geometriei
  • Widgeturi compozite (text și imagine) pentru butoane, etichete și meniuri
  • Gestionarea transparenței pentru imagini
8.3 10 februarie 2000
  • Extinderea opțiunilor widgetului canvas
  • Suport îmbunătățit pentru imagine
  • Gestionarea cvadruplă a clicurilor mouse-ului
8.1 29 aprilie 1999
  • Suport Unicode
8.0 18 august 1997
  • Aspect nativ pentru platformele Macintosh și Windows
  • Interfață nouă pentru widget menu
  • Noul mecanism de gestionare a fonturilor
  • Includerea aplicațiilor externe în Tk sub Unix
  • Suport pentru imagini din widget text
  • Funcția Tk în mediul sigur Safe-Tcl
  • Alinierea numerelor de versiune Tk cu numerele de versiune Tcl
4.2 16 octombrie 1996
  • Rescrieți managerul de geometrie ( grid)
  • Widgeturi standardizate pentru selectorul de fișiere, selectorul de culori și casetele de mesaje
  • Prima versiune pentru Windows și Macintosh
4.1 21 aprilie 1996
  • Noul manager de geometrie ( grid)
  • Performanță îmbunătățită a widgetului text
  • Prima versiune pentru Windows și Macintosh
4.0 1 iulie 1995
  • Suport pentru formate de imagine XPM și GIF
  • Extinderea opțiunilor widgetului text
  • O mai bună compatibilitate cu Motif
3.0 Decembrie 1992
  • Exportați în Postscript conținutul widgetuluicanvas
  • O mai bună gestionare a culorii
2.2 August 1992
  • Widget text
  • Îmbunătățirea widgetului canvas
  • Așteptați o comandă de eveniment ( tkwait)
  • Opțiuni -statepentru a dezactiva un widget
  • Opțiuni noi pentru câmpurile de introducere

Cuvinte rezervate

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

Note și referințe

  1. „  https://www.tcl.tk/software/tcltk/8.6.html  ” (Accesat la 6 februarie 2021 )
  2. (în) „  Tcl / Tk 8.6.11 ELIBERAT  ” ,4 ianuarie 2021(accesat la 6 februarie 2021 )

Anexe

Bibliografie

  • John K. Ousterhout, Hypergraphics and Hypertext in Tk , The X Resource, Issue Five, 1993
  • Cameron Laird, Kathryn Soraiz, Tk stabilește standardul , UnixInsider 8/4/2000. [1]
  • Kathryn Edwards, AZ a limbajelor de programare: Tcl , Computerworld, mai 2009. [2]
Cărți
  • (fr) Bernard Desgraupes, Tcl / Tk - Learning and Reference , Vuibert, ( ISBN  2-7117-8679-X ) , 2002.
  • (ro) John K. Ousterhout, Tcl and the Tk Toolkit , Addison-Wesley, Reading, MA, SUA, ( ISBN  0-201-63337-X ) , 1994. (Proiect disponibil online )
  • (ro) Brent B. Welch, Practical Programming in Tcl and Tk , Prentice Hall, Upper Saddle River, NJ, SUA, ( ISBN  0-13-038560-3 ) , 2003. (Mai multe capitole online )
  • (ro) J. Adrian Zimmer, Tcl / Tk for Programmers , IEEE Computer Society, distribuit de John Wiley și Sons, ( ISBN  0-8186-8515-8 ) , 1998. (Mai multe capitole online )
  • (ro) Cliff Flynt, Tcl / Tk for Real Programmers , Morgan Kaufman Publishers, ( ISBN  0-122-61205-1 ) , 1998.
  • (ro) Eric Foster-Johnson, Aplicații grafice cu Tcl și Tk , M&T, ( ISBN  1-55851569-0 ) , 1997.
  • (ro) Mark Harrison și Michael McLennan, Programare eficientă Tcl / Tk , Addison-Wesley, Reading, MA, SUA, ( ISBN  0-201-63474-0 ) , 1998.
  • (ro) Mark Harrison (ed.), Tcl / Tk Tools , O'Reilly Media, ( ISBN  1-56592-218-2 ) , 1997.

Articole similare

linkuri externe

Cele mai utilizate biblioteci și extensii