O gerenciador de layout “Place”
O gerenciador de layouts Place é o mais simples dos gerenciadores do Tkinter. Permite você inserir um objeto na tela na posição e tamanho que você quiser. Mas esta simplicidade pode ser enganosa. Se todas as telas fossem do mesmo tamanho e mesma resolução, o tamanho e posição do objeto estaria otimizado, tal como ocorre numa página de um livro em papel. Mas, na prática, o seu programa irá operar um muitas telas diferentes. A dimensão e posição perfeitas para um objeto numa tela de grandes dimensões pode ser ruim numa tela menor. Os gerenciadores Packer e Grid são capazes de manipular melhor esta situação.
Mas existem situações, por exemplo, quando você estiver emulando o painel de um equipamento, que o Place é a melhor solução, pois você não deseja que o painel se altere nas diferentes telas. Vale a pena conhecer os detalhes do Place para saber como utilizá-lo nestas situações especiais.
Ao contrário do grid e do packer, place não permite o widget pai expandir ou se comprimir para abraçar todos os widgets filho.
parâmetro | ação |
---|---|
anchor
|
Posiciona o objeto dentro do espaço a ele alocado. Valor default NW. Pode ser N, E, S, W, NE, NW, SE, ou SW
|
bordermode
|
Tipo de borda, valor default INSIDE. INSIDE indica que as outras opções se referem a parte de dentro do widget pai. (ignorando a borda do pai). OUTSIDE opera de forma contrária.
|
height
|
altura do widget
|
in
|
Mestre relativo ao qual é realizado o posicionamento do widget
|
relheight
|
Sem valor default. Altura como uma fração da altura do widget pai. Varia entre 0.0 e 1.0
|
relwidth
|
Sem valor default. Largura como uma fração da largura do widget pai. Varia entre 0.0 e 1.0
|
relx
|
Valor default 0. Offset horizontal como uma fração da largura do widget pai. Varia entre 0.0 e 1.0
|
rely
|
Valor default 0. Offset vertical como uma fração da altura do widget pai. Varia entre 0.0 e 1.0
|
width
|
Largura do widget. Valor default 0
|
x
|
Valor default 0- Offset horizontal
|
y
|
Valor default 0. Offset vertical
|
Funções adicionais disponibilizadas pelo Place
place_forget(self)
Retira o widget da tela. Não destrói o widget, que pode ser inserido novamente quando desejado.
place_info(self)
Retorna informação sobre o posicionamento do widget.
place_slaves(self)
Retorna uma lista de todos escravos associados ao widget.
Experimento simples com o Place
Este curto script mostra como podemos utilizar o place:
Posicionando dois botões de forma absoluta
import tkinter as tk
from tkinter import messagebox
def main(args):
root = tk.Tk()
btn= tk.Button(root, text ="Click aqui", command = processaBtn)
btn.place(bordermode=tk.OUTSIDE, height=100, width=100)
btn1= tk.Button(root, text ="Ou Click aqui", command = processaBtn1)
btn1.place(bordermode=tk.OUTSIDE, height=100, width=100,x=100, y=100)
root.mainloop()
return 0
def processaBtn():
messagebox.showinfo( "OLá", "Você pressionou o botão certo!")
def processaBtn1():
messagebox.showinfo( "Ops!!!", "Você pressionou o botão errado!")
if __name__ == '__main__':
import sys
sys.exit(main(sys.argv))
Resultado do script
A apresentação fica da seguinte forma:
Analisando o código temos:
btn= tk.Button(root, text ="Click aqui", command = processaBtn) btn.place(bordermode=tk.OUTSIDE, height=100, width=100)
Criamos um botão com o label “click aqui” e o associamos ao método processaBtn Inserimos este botão na parte superior esquerda, com as dimensões de 100 x 100 pixels
btn1= tk.Button(root, text ="Ou Click aqui", command = processaBtn1) btn1.place(bordermode=tk.OUTSIDE, height=100, width=100,x=100, y=100)
Criamos outro botão, agora com o label “ou click aqui” e o associamos ao método processaBtn1 Inserimos este botão com um offset de 100 unidades em X, 100 unidades em Y, a partir da parte superior esquerda, com as mesmas dimensões de 100 x 100 pixels do botão anterior.
root.mainloop()
Entra no loop principal do programa, esperando pelos eventos advindos do mouse.
Clique nos botões e veja a resposta do programa.
Em um resumo podemos dizer que normalmente o Packer é utilizado em configurações mais simples, tais como a tela inicial de um programa, o grid em situações onde temos muitos widgets, tais como nos diálogos de entrada de dados, e o place em situações bem específicas onde a posição e o tamanho dos widgets é vital , como na emulação de painéis de equipamentos.
0 Comentários