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.ok
Criará 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 1
Cria uma janela para conter outras.
toplevel .principal -use [winfo id .a]
button .principal.ok -text "OK" -command {exit}
pack .principal.ok
Criará 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.ok
Cria 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+$y
Centraliza 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
info@souzamonteiro.com

Copyright(C) 2000 by Roberto Luiz Souza Monteiro