![]() |
Tcl/Tk
Curso On-Line de Programação |
Introdução ao Tk
TK é o Tool Kit, o kit de
ferramentas gráficas do Tcl. Com Tk é possível construir
rapidamente aplicativos gráficos para UNIX, Windows e MacOS. Para
você ter uma idéia de como é rápido e fácil
construir aplicativos baseados em janelas, utilizando Tk, veja o exemplo
abaixo. Não se preocupe em entender os comandos. Eles serão
estudados mais tarde.
Alô Mundo
Veja uma implementação do programa "Alô Mundo!" em Tk. Alô mundo é o primeiro programa, que todo programador escreve quando está aprendendo uma linguagem.
button .alomundo -text "Alô Mundo" -command {exit}
pack .alomundoPronto! As duas linhas de comando anteriores farão tudo: Criarão um botão em uma janela, configurarão o envento Click do botão e posicionarão o botão na janela.

Experimente: Copie e cole o código acima na linha de comando do interpretador Tcl, o wish.
No exemplo anterior, a primeira palavra, button, é o comando usado para se criar um botão em Tk. Ela indica a classe a que pertence o widget, componente gráfico, que queremos criar. A segunda palavra .alomundo, é o nome do objeto que queremos criar. Observe que o nome do objeto começa com um ponto (.). A terceira palavra -text é o nome de uma propriedade que queremos configurar. A palavra seguinte "Alô Mundo" é o valor da propriedade que estamos configurando. A quinta palavra -command, é também uma propriedade, que indica ao Tk a ação que deve ser executada quando o botão for pressionado. Neste caso a ação será sair do programa: exit.
Uma vez que um widget seja criado, será
criado também um comando, com o mesmo nome do widget, que permitirá
acessar as propriedades do widget.
Determinando os nomes dos widgets
Em Tk os widgets são agrupados em
uma hierarquia, como uma árvore de diretórios. Onde cada
nível é separado por um ponto (.). O nome do nível
mais alto, e que corresponde á primeira janela, criada automaticamente
quando o interpretador Tcl é iniciado é ponto (.). Assim
um widget inserido na janela principal se chamará .nome_do_widget.
Na maioria dos casos, teremos os widgets arrumados no interior de molduras,
que por sua vez estarão no interior de alguma janela. Assim, o nome
de um widget nesta condição seria: .nome_da_janela.nome_da_moldura.nome_do_widget.
Opções
Em Tk as propriedades de um widget são chamadas de opções. Para ler uma opção de um widget utilizamos o sub-comando cget, do widget cuja opção queremos ler. Assim em nosso exemplo "Alô Mundo", para ler-mos o valor da opção text faríamos o seguinte:
puts [.alomundo cget -text]O comando acima exibirá no console Tcl o texto "Alô Mundo".
Para configurar uma opção de um widget utilizamos o sub-comando configure, do widget cuja opção queremos configurar. Assim em nosso exemplo "Alô Mundo", para configurar-mos o valor da opção text faríamos o seguinte:
.alomundo configure -text "OK"
puts [.alomundo cget -text]O comando acima exibirá no console Tcl o texto "OK".
Observe que o texto no botão, mudou imediatamente de "Alô Mundo" para "OK".
Cada widget Tk possui um número enorme de opções. A seguir são apresentadas as principais opções suportadas pelos widgets Tk.
Observe que muitas delas não são
suportadas por todos os widgets, enquanto que outros widgets suportarão
outras opções que não são apresentadas aqui,
e serão vistas mais adiante.
| Opção | Descrição |
| -activebackground | Cor de fundo quando o widget está ativo. |
| -activeborderwidth | Largura da borda quando o widget está ativo. |
| -activeforeground | Cor do primeiro plano quando o widget está ativo. |
| -anchor | Referência para posicionamento do widget: n, ne, e, se, s, sw, w, nw e center. |
| -background | Cor de fundo. |
| -bitmap | Bitmap para exibir no widget: error, gray12, gray25, gray50, gray75, hourglass, info, questhead, question, warning ou @nome_do_arquivo. |
| -borderwidth | Largura da borda. |
| -command | Comando a ser executado quando o evento default do widget ocorrer. |
| -cursor | Cursor do mouse. O nome do cursor depende do sistema operacional. No UNIX veja o arquivo /usr/include/X11/cursorfont.h. Também pode ser o nome de um arquivo: @nome_do_arquivocor_de_fundo. Onde cor_de_fundo indica a cor transparente. |
| -disabledforeground | Cor de fundo quando o widget está desabilitado. |
| -exportselection | Indica se uma seleção em um widget irá para o clipboard externo ou não. 1 - Exportar, 0 - Não exportar. Tk possui seu próprio clipboard. |
| -font | Nome e atributos da fonte em uma lista. |
| -foreground | Cor de primeiro plano. |
| -height | Altura do widget. |
| -hilightbackground | Cor do retângulo em volta do widget quando ele não detém o foco. |
| -hilightcolor | Cor do retângulo em volta do widget quando ele detém o foco. |
| -hilightthickness | Largura do retângulo em volta do widget quando ele detém o foco. |
| -image | Imagem a ser exibida no widget. Nome da imagem obtida com o comando image. |
| -insertbackground | Cor de fundo da área do cursor no modo inserir. |
| -insertborderwidth | Largura da área do cursor no modo inserir. |
| -insertofftime | Tempo em que o cursor deve permanecer desativado enquanto ele pisca no modo inserir. |
| -insertontime | Tempo em que o cursor deve permanecer ativado enquanto ele pisca no modo inserir. |
| -insertwidth | Largura do cursor no modo inserir. |
| -jump | Informa às scrollbars e escalas conectadas ao widget para atrasarem a atualização até o botão do mouse ser liberado. |
| -justify | Alinhamento do texto: left, center, right. |
| -orient | Orientação: horizontal, vertical. |
| -padx | Espaçamento horizontal. |
| -pady | Espaçamento vertical. |
| -relief | Efeito 3D da borda do widget: flat, groove, raised, ridge, sunken. |
| -repeatdelay | Tempo necessário para iniciar a auto-repetição ao se manter pressionado um botão ou tecla. |
| -repeatinterval | Tempo entre as auto-repetições. |
| -selectbackground | Cor de fundo dos ítens selecionados. |
| -selectborderwidth | Largura da borda ao redor dos ítens selecionados. |
| -selectforeground | Cor do primeiro plano dos ítens selecionados. |
| -setgrid | Indica se o widget deve controlar a grade de redimensionamento para a janela onde ele está inserido. |
| -state | Estado: normal, disabled, active. |
| -takefocus | Indica se o widget deve sempre ou nunca receber o foco. Se vazio, isso será decido pelo Tk. |
| -text | Texto a ser exibido no widget. |
| -textvariable | Variável que contém o texto que deve ser exibido no widget. O widget será atualizado sempre que o valor da variável mudar, e o valor da variável mudará caso o texto no widget mude. |
| -troughcolor | Cor da área de deslizamento das scrollbars. Não funciona no Windows. |
| -underline | Posição do caractere sublinhado no texto do widget. Usado em menus e botões para indicar a tecla de atalho. Se -1, Nenhum caractere será sublinhado. |
| -width | Largura do widget. |
| -wraplength | Largura da área coberta pela linha de texto para que ocorra uma quebra automática de linha. |
| -xscrollcommand | Comando usado para comunicação com a scrollbar horizontal. |
| -yscrollcommand | Comando usado para comunicação com a scrollbar vertical. |
Para uma descrição detalhada de todos os comandos disponíveis em Tk, consulte a documentação on-line, ou o Tcl/Tk Reference Guide, ou ainda o Tcl/Tk Electronic Reference.
Para maiores informações envie e-mail para info@souzamonteiro.com.
| http://www.souzamonteiro.com |
Copyright(C) 2000 by Roberto Luiz Souza Monteiro