Tk (ciência da computação)
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:
- grade (organiza os widgets de acordo com uma grade);
- empacotar (empilhar ou organizar widgets lado a lado em ordem relativa);
- local (organiza widgets de forma absoluta).
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
- Um botão azul simples com escrita branca associada a um comando para sair.
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 |
|
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
-
" https://www.tcl.tk/software/tcltk/8.6.html " (acessado em 6 de fevereiro de 2021 )
-
(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