![]() |
Tcl/Tk
Curso On-Line de Programação |
Criando e gerenciando janelas
Em Tk janelas são chamadas Toplevels e são criadas com o comando toplevel como mostrado abaixo:
toplevel .nome_da_janela [-opção1 valor1] [-opção2 valor2]... [-opçãoN valorN]Onde .nome_da_janela é o nome do objeto janela que desejamos criar, opção1, opção2, opçãoN são opções que desejamos configurar e valor1, valor2, valorN são os valores que desejamos atribuir a cada uma das opções que desejamos configurar.
Exemplo:
toplevel .principal
button .principal.ok -text "OK" -command {exit}
pack .principal.okCriará uma janela com um botão "OK" no centro.

Além de algumas das opções
apresentadas na aula anterior os Toplevels suportam as seguintes opções:
| Opção | Descrição |
| -class | Nome da classe da janela para ser usada na base de dados de opções. |
| -colormap | Mapa de cores a ser usado para a janela. Pode ser new, o caminho de outra janela, ou vazio. |
| -container | Se 1, faz com que a janela seja um container para outro aplicativo. |
| -menu | Nome de um widget menu para ser usado na janela. |
| -use | Identificador de uma janela onde esta janela será embutida. Veja winfo id. |
| -screen | Tela onde esta janela será apresentada. Esta opção funciona no UNIX. |
| -visual | Visual a ser usado para a janela. |
Exemplos
-container, -use
toplevel .a -container 1Cria uma janela para conter outras.
toplevel .principal -use [winfo id .a]
button .principal.ok -text "OK" -command {exit}
pack .principal.okCriará uma janela com um botão "OK" no centro, dentro da janela .a.
Obtendo informações sobre uma janela
Podemos obter informações
sobre as janelas através do comando winfo. winfo pertence
a uma classe de comandos que suportam sub-comando. A seguir são
apresentados todos os comando winfo:
| Comando | Descrição |
| winfo allmapped | Retorna 1 se a janela e todos os seus descendentes estiverem mapeados. |
| winfo atom | Retorna um identificador inteiro para o atom, dado o seu nome na janela. |
| winfo atomname | Retorna o nome de um atom dado o seu identificador inteiro. |
| winfo cells | Retorna o número de células no mapa de cores da janela. |
| winfo children | Retorna uma lista com os nomes de todas as janelas filhas da janela dada. |
| winfo class | Retorna o nome da classe da janela. |
| winfo colormapfull | Retorna 1 se o mapa de cores da janela estiver cheio. Caso contrário, retorna 0. |
| winfo containing | Retorna o nome da janela contendo o ponto X Y no display da janela dada. |
| winfo depth | Retorna a definição em bits por pixel da janela. |
| winfo exists | Retorna 1 se a janela existir. Caso contrário 0. |
| winfo fpixels | Retorna um número em ponto flutuante, correspondente ao número de pixels na janela, que correspondem à distância dada. |
| winfo geometry | Retorna a geometria da janela em pixels, na forma: larguraxaltura+x+y. |
| winfo height | Altura da janela. |
| winfo id | Identificador da janela em formato hexadecimal. |
| winfo interps | Retorna uma lista de todos os interpretadores Tcl registrados no display da janela. |
| winfo ismapped | Retorna 1 se a janela estiver mapeada. Caso contrário 0. |
| winfo manager | Retorna o nome do gerenciador de geometria responsavel pela janela. |
| winfo name | Retorna o nome da janela, sem o nome da janela mãe. |
| winfo parent | Retorna o nome da janela mãe da janela dada. |
| winfo pathname | Retorna o nome da janela, dado o seu identificador hexadecimal. |
| winfo pointerx | Retorna a coordenada x do ponteiro do mouse. |
| winfo pointerxy | Retorna as coordenadas x e y do ponteiro do mouse. |
| winfo pointery | Retorna a coordenada y do ponteiro do mouse. |
| winfo pixels | Retorna o número de pixels na janela, que correspondem à distância dada arredondada para o inteiro mais próximo. |
| winfo reqheight | Retorna uma string decimal correspondente a altura requisitada pela janela. |
| winfo reqwidth | Retorna uma string decimal correspondente a largura requisitada pela janela. |
| winfo rgb | Retorna uma lista com três valores RGB correspondentes à cor dada, na janela. |
| winfo rootx | Retorna a coordenada X do canto superior esquerdo da janela, dentro da janela raiz, incluindo a borda da janela. |
| winfo rooty | Retorna a coordenada Y do canto superior esquerdo da janela, dentro da janela raiz, incluindo a borda da janela. |
| winfo server | Retorna informações sobre o servidor da janela. |
| winfo screen | Retorna o nome da tela onde a janela está. Na forma nome_do_display.índice. |
| winfo screencells | Retorna o número de células no mapa de cores padrão na tela da janela. |
| winfo screendepth | Retorna a definição em bits por pixel da tela da janela. |
| winfo screenheight | Retorna a altura da tela em pixels. |
| winfo screenmmheight | Retorna a altura da tela em milímetros. |
| winfo screenmmwidth | Retorna a largura da tela em milímetros. |
| winfo screenvisual | Retorna a classe do visual da tela: directcolor, grayscale, pseudocolor, staticcolor, staticgray ou truecolor. |
| winfo screenwidth | Retorna a largura da tela em pixels. |
| winfo toplevel | Retorna o nome da janela que contém a janela dada. |
| winfo visual | Retorna a classe do visual da janela: directcolor, grayscale, pseudocolor, staticcolor, staticgray ou truecolor. |
| winfo visualsavailable | Retorna uma lista contendo as classes de visuais disponíveis para a janela. |
| winfo vrootheight | Retorna a altura da tela virtual onde está a janela dada. Disponível no UNIX. |
| winfo vrootwidth | Retorna a largura da tela virtual onde está a janela dada. Disponível no UNIX. |
| winfo vrootx | Retorna o deslocamento X da tela virtual onde está a janela dada. |
| winfo vrooty | Retorna o deslocamento Y da tela virtual onde está a janela dada. |
| winfo width | Retorna a largura da janela. |
| winfo x | Retorna a coordenada X do canto superior esquerdo da janela dentro da janela mãe. |
| winfo y | Retorna a coordenada Y do canto superior esquerdo da janela dentro da janela mãe. |
Em geral os resultados variam de um sistema
operacional para outro. Assim os exemplos serão vistos logo a seguir,
quando tiver-mos estudado o gerenciador de janelas.
Gerenciando janelas
Podemos gerenciar as janelas criadas com
Tk, através do gerenciador de janelas. A seguir são
apresentados todos os comando do gerenciador de janelas wm:
| Comando | Descrição |
| wm aspect | Informa ao gerenciador de janelas o aspecto desejado para a janela. |
| wm client | Informa ao gerenciador de janelas a máquina cliente onde o aplicativo está rodando. |
| wm colormapwindows | Informa ao gerenciador de janelas para usar um mapa de cores privado para as janelas internas. |
| wm command | Informa ao gerenciador de janelas o comando usado para invocar o aplicativo. |
| wm deiconify | Retorna uma janela, que estava minimizada, ao seu estado original. |
| wm focusmodel | Especifica o modelo de foco para a janela: active ou passive. |
| wm frame | Retorna o identificador para a moldura da janela. Caso não haja nenhuma moldura, retorna o identificador da janela. |
| wm geometry | Muda a geometria da janela. Na forma: larguraxaltura+x+y. |
| wm grid | Informa que a janela deve ser gerenciada como uma grade, com as relações especificadas entre grades e pixels. |
| wm group | Determina um lider para o grupo ao qual a janela pertence. |
| wm iconbitmap | Especifica um ícone para a janela. É um bitmap X11 e não um bitmap Windows. |
| wm iconify | Minimiza a janela. |
| wm iconmask | Especifica uma máscara para ser usada com o ícone especificado com wm iconbitmap. |
| wm iconname | Especifica um nome para o rótulo do ícone. |
| wm iconposition | Especifica a posição do ícone na janela raíz. |
| wm iconwindow | Especifica uma janela para ser usada como ícone quando a janela for minimizada. |
| wm maxsize | Especifica a dimensão máxima da janela. |
| wm minsize | Especifica a dimensão mínima da janela. |
| wm overrideredirect | Se 1, exibirá a borda da janela. Se 0, a janela será exibida sem bordas. |
| wm positionfrom | Indica de quem a posição atual da janela foi requisitada: program ou user. |
| wm protocol | Especifica um comando Tcl para ser executado, quando ocorrer uma mensagem de protocolo do tipo especificada. |
| wm resizable | Informa se a janela pode ser redimensionada, e em que direção isso pode ocorrer. |
| wm sizeable | Informa quem mudou as dimensões da janela: program ou user. |
| wm state | Retorna o estado atual da janela: normal, icon, iconic ou withdrawn. |
| wm title | Determina o título da janela. |
| wm transient | Informa que a janela é uma escrava da janela mestre. Isso faz com que somente um ícone seja apresentado para todo o aplicativo, e que ao fechar ou minimizar a janela mestre, a janela escrava seja fechada ou minimizada. |
| wm withdraw | Esconde a janela. |
Exemplos
winfo screenheight, winfo screenwidth, wm geometry, wm protocol, wm title, wm withdraw
toplevel .principal
button .principal.ok -text "OK" -command {exit}
pack .principal.okCria uma janela com um botão "OK" no centro.
set x [expr {([winfo screenwidth .principal] - [winfo width .principal])/2}]
set y [expr {([winfo screenheight .principal] - [winfo height .principal])/2}]
wm geometry .principal [winfo width .principal]x[winfo height .principal]+$x+$yCentraliza a janela na tela.
wm title .principal "Curso de Tcl/Tk"Especifica o título da janela.
wm protocol .principal WM_DELETE_WINDOW {exit}
Determina que o programa seja encerrado caso
a janela seja fechada, clicando no botão fechar da moldura da janela.
wm withdraw .Esconde a janela raíz do Tk.
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