Tk (ciência da computação)

Tk Descrição do Tk-Demo usando Tk 8.6.6 no Windows 10, imagem de novembro de 2016.png. Em formação
Desenvolvido por Tcl Core Team et al.
Última versão 8.6.11 (31 de dezembro de 2020)
Depósito core.tcl.tk/tk
Escrito em VS
Sistema operacional Multi plataforma
Meio Ambiente Plataforma cruzada
Modelo Biblioteca GUI
Licença BSD
Local na rede Internet www.tcl.tk

Tk é uma biblioteca de GUIs de plataforma cruzada . Desenhado por John Ousterhout , originalmente para sua linguagem de script Tcl , hoje ele faz interface com várias linguagens incluindo Perl , Python , Ruby , Lua , Common Lisp , REXX , Ada , Prolog , OCaml , R , Julia , Go , Rust ou APL .

os widgets

O Tk oferece nativamente uma coleção de componentes de interface gráfica ( widgets ):


  • label (rótulo)
  • entry( campo de texto de entrada)
  • listbox (lista de rolagem)
  • tk_optionMenu (lista)
  • menu (menu de rolagem)
  • menubutton (menu suspenso de um botão)
  • scale (controle deslizante horizontal e vertical)
  • spinbox (área de seleção digital)
  • frame (quadro, Armação)
  • labelframe (quadro com título)
  • scrollbar( barra de rolagem )
  • panedwindow (painel deslizante)
  • text (contêiner de hipertexto avançado)
  • canvas (contêiner de objeto gráfico 2D evoluído)
  • tk_chooseColor (selecionador de cores)
  • tk_chooseDirectory (seletor de diretório)
  • tk_dialog (diálogo modal)
  • tk_getOpenFile (seletor de arquivo)
  • tk_messageBox (caixa de mensagem)
  • tk_popup( menu contextual )

Cada widget possui propriedades que podem ser modificadas de acordo com o tipo (tamanho, relevo, cor, conteúdo, estado, evento).

Gestão de geometria

Para controlar a dimensão e organizar graficamente os widgets , existem três gerenciadores de geometria:

Enquanto um widget não estiver associado a um gerenciador de geometria, ele não aparecerá na tela.

Gestão de eventos

Ao contrário de um programa de linha de comando em que a interação do usuário é sequencial, a interface gráfica envolve a noção de programação de eventos com outra lógica. A qualquer momento, cada widget provavelmente será afetado pela ação do usuário (o evento). Existem eventos simples ( clique do mouse em um botão para inserir o teclado em um campo) e eventos mais complexos (navegação em um menu ou um combo).

Diversas respostas automáticas de eventos são anexadas a cada widget por padrão . Isso corresponde a um gerenciamento de eventos de baixo nível onde o programador tem muito pouco para intervir. Um loop de eventos cuida deles e os distribui.

Então, por meio da opção -command, podemos vincular um widget a uma chamada de procedimento ou a um comando externo ( callback ). Se você deseja associar uma determinada resposta não definida por padrão a um widget , o Tcl-Tk tem um mecanismo muito flexível graças ao comando bind.

Exemplos

pack [button .b -text Quitter -bg blue -fg white -command exit]
  • Uma mensagem de aviso com tk_messageBox.
tk_messageBox -message "Vous devez entrer une valeur entre 1 et 100" \ -type ok -icon warning
  • Um relógio digital em 6 linhas de código.
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]}
  • Exibição de caracteres Unicode gregos, russos, hebraicos, árabes, chineses e japoneses em um 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 "
  • Usando o widget canvas para exibir um polígono cujo número de lados varia interativamente usando um controle deslizante 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}]

Biblioteca padrão

Tk tem uma biblioteca padrão chamada Tklib (a contraparte de Tcl sendo Tcllib) escrita exclusivamente em Tcl. Ele contém vários módulos para representação gráfica de dados, gerenciamento e exibição de textos, tabelas, campos de entrada específicos, bem como BWidget (uma biblioteca de widgets de alto nível).

História da Tk

John Ousterhout começou a projetar esta Interface Homem-Máquina (HMI) no final de 1988 em paralelo com o desenvolvimento do Tcl. Tk foi influenciado pelo sistema HyperCard da Apple . Ele foi desenvolvido em C e baseado em Xlib , fornecendo dez componentes de IU chamados widgets ( contração do gadget de janela ). Naquela época, eles funcionavam apenas no UNIX .

A combinação de Tcl e Tk (chamada Tcl-Tk ou Tcl / Tk) foi apresentada pela primeira vez em Janeiro de 1991na Conferência USENIX . Tornou possível superar a complexidade e aumentar o tempo de desenvolvimento de um aplicativo escrito com a biblioteca Motif . Posteriormente, o desenvolvimento do Tk foi suficientemente desacoplado do Tcl para ser usado com outras linguagens. As versões para Windows e Macintosh surgiram em 1994 sob o impulso dos desenvolvedores do laboratório da Sun Microsystems . Por uma questão de clareza,agosto de 1997, foi tomada a decisão de alinhar os números da versão do Tk com os do Tcl.

Dentro dezembro de 2007sai de Tcl-Tk 8.5. Esta versão tem a particularidade de incluir um motor temático que melhora muito o aspecto visual da interface gráfica, rompendo definitivamente com o património da biblioteca Motif. Dentrodezembro 2012, sai de Tcl-Tk 8.6. Trabalho foi feito nas coordenadas dos objetos no widget canvase no suporte do formato PNG .

História de versões significativas

Versão Data de lançamento Principais novidades
8,6 20 de dezembro de 2012
  • Suporte para formato PNG com controle de canal alfa
  • Seletor de ferro fundido que leva em consideração a plataforma
  • Movimento absoluto de objetos no widget de tela
  • Rotação de textos no widget de tela
  • Nome da cor de acordo com os padrões da web
8,5 20 de dezembro de 2007
  • Inclusão de um motor de tema no kernel
  • Fontes anti-aliasing ( anti-aliasing ) no X11
  • Um widget textmais suave e harmonizado em todas as plataformas
  • Inclusão de guias, caixas de combinação, listas de árvore e barras de progresso
  • Gerenciamento de transparência para janelas
8,4 10 de setembro de 2002
  • Inclusão de spinboxpainéis deslizantes ( panedwindow) e molduras com título ( labelframe)
  • Cunha assimétrica para gerenciamento de geometria
  • Widgets compostos (texto e imagem) para botões, rótulos e menus
  • Gerenciando transparência para imagens
8,3 10 de fevereiro de 2000
  • Estendendo opções de widget canvas
  • Suporte de imagem aprimorado
  • Gerenciamento quádruplo de cliques do mouse
8,1 29 de abril de 1999
  • Suporte Unicode
8,0 18 de agosto de 1997
  • Aparência nativa para plataformas Macintosh e Windows
  • Nova interface para o widget menu
  • Novo mecanismo para gerenciar fontes
  • Inclusão de aplicativos externos em Tk sob Unix
  • Suporte para imagens no widget text
  • Função Tk no ambiente seguro Safe-Tcl
  • Alinhamento de números de versão Tk com números de versão Tcl
4,2 16 de outubro de 1996
  • Reescrever o gerenciador de geometria ( grid)
  • Widgets padronizados para seletor de arquivos, seletor de cores e caixas de mensagens
  • Primeira versão para Windows e Macintosh
4,1 21 de abril de 1996
  • Novo gerenciador de geometria ( grid)
  • Melhor desempenho do widget text
  • Primeira versão para Windows e Macintosh
4,0 1 de julho de 1995
  • Suporte para formatos de imagem XPM e GIF
  • Estendendo opções de widget text
  • Melhor compatibilidade com Motif
3,0 Dezembro de 1992
  • Exportar em Postscript do conteúdo do widgetcanvas
  • Melhor gerenciamento de cores
2,2 Agosto de 1992
  • Ferramenta text
  • Melhoria de widget canvas
  • Espere por um comando de evento ( tkwait)
  • Opções -statepara desativar um widget
  • Novas opções para campos de entrada

Palavras reservadas

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

Notas e referências

  1. "  https://www.tcl.tk/software/tcltk/8.6.html  " (acessado em 6 de fevereiro de 2021 )
  2. (em) Tcl / Tk 8.6.11 LANÇADO  " ,4 de janeiro de 2021(acessado em 6 de fevereiro de 2021 )

Apêndices

Bibliografia

  • John K. Ousterhout, Hypergraphics and Hypertext in Tk , The X Resource, Issue Five, 1993
  • Cameron Laird, Kathryn Soraiz, Tk define o padrão , UnixInsider 8/4/2000. [1]
  • Kathryn Edwards, The AZ of Programming Languages: Tcl , Computerworld, maio de 2009. [2]
Livros
  • (fr) Bernard Desgraupes, Tcl / Tk - Learning and Reference , Vuibert, ( ISBN  2-7117-8679-X ) , 2002.
  • (en) John K. Ousterhout, Tcl and the Tk Toolkit , Addison-Wesley, Reading, MA, USA, ( ISBN  0-201-63337-X ) , 1994. (Rascunho disponível online )
  • (en) Brent B. Welch, Practical Programming in Tcl e Tk , Prentice Hall, Upper Saddle River, NJ, EUA, ( ISBN  0-13-038560-3 ) , 2003. (Vários capítulos online )
  • (en) J. Adrian Zimmer, Tcl / Tk for Programmers , IEEE Computer Society, distribuído por John Wiley and Sons, ( ISBN  0-8186-8515-8 ) , 1998. (Vários capítulos online )
  • (en) Cliff Flynt, Tcl / Tk for Real Programmers , Morgan Kaufman Publishers, ( ISBN  0-122-61205-1 ) , 1998.
  • (en) Eric Foster-Johnson, Graphical applications with Tcl and Tk , M&T, ( ISBN  1-55851569-0 ) , 1997.
  • (en) Mark Harrison e Michael McLennan, Effective Tcl / Tk Programming , Addison-Wesley, Reading, MA, USA, ( ISBN  0-201-63474-0 ) , 1998.
  • (en) Mark Harrison (ed), Tcl / Tk Tools , O'Reilly Media, ( ISBN  1-56592-218-2 ) , 1997.

Artigos relacionados

links externos

Bibliotecas e extensões mais usadas