Code

tiforadacaixa

Python3 TKINTER - Gerenciador de layout Place

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ÂMETROS DE CONFIGURAÇÃO DO PLACE
parâmetroaçã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:
Posicionando dois botões de forma absoluta
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.

Postar um comentário

0 Comentários