Quando tentei centralizar meu botão, ele não centralizou perfeitamente acima da janela. Tentei quase tudo, mas ele foi para a direita ou para a esquerda, não para o meio da janela.
Eu esperava que ele fosse colocado no meio da janela.
Quando tentei centralizar meu botão, ele não centralizou perfeitamente acima da janela. Tentei quase tudo, mas ele foi para a direita ou para a esquerda, não para o meio da janela.
Eu esperava que ele fosse colocado no meio da janela.
O truque é garantir que o espaço alocado esteja no centro da janela. Por padrão, os widgets em uma grade ocupam apenas a menor quantidade de espaço necessária. Assim, se você tiver uma janela com 500 pixels de largura, mas tiver três colunas de 100 pixels, os widgets preencherão apenas 300 pixels de espaço, deixando o restante sem uso.
A solução é garantir que pelo menos uma coluna cresça e diminua para que a janela inteira seja usada. Você faz isso com
columnconfigure
e aweight
opção. Dar a uma coluna um peso diferente de zero fará com que ela use espaço não utilizado.Aqui está o exemplo mais simples disso em ação. Observe que temos uma única coluna, e demos a essa coluna um peso de 1. Isso significa que todo o espaço não utilizado é alocado para essa coluna. Observe também que, por padrão, o botão é centralizado no espaço alocado a ele. Você pode redimensionar a janela para qualquer tamanho que desejar e o botão permanecerá centralizado.
A dificuldade surge quando há várias colunas de tamanhos diferentes. Mesmo isso tem uma solução bem simples. Se você quiser que apenas o botão fique na linha superior, faça com que a linha abranja todas as colunas, o que você pode fazer com a
columnspan
opção.O exemplo a seguir adiciona cinco colunas de larguras variadas, cada uma com um peso diferente, fazendo com que cada uma delas se expanda em uma quantidade diferente.
Para mais informações, veja a pergunta O que 'peso' faz em tkinter?