Como Criar uma Janela de Tkinter com um Tamanho Constante

Jinku Hu 25 junho 2020
Como Criar uma Janela de Tkinter com um Tamanho Constante

O tamanho da janela Tkinter é por padrão redimensionável mesmo que você atribua a largura e a altura quando a instância da janela é iniciada.

import tkinter as tk

app = tk.Tk()

app.geometry("200x200")

app.mainloop()

Você poderia arrastar a janela criada pelos códigos acima para obter janelas de tamanhos diferentes. A função resizeable deve ser utilizada para restringir a largura e o tamanho da altura.

import tkinter as tk

app = tk.Tk()

app.geometry("200x200")
app.resizable(width=0, height=0)

app.mainloop()

app.resizable(width=0, height=0) não permite que tanto a largura quanto a altura sejam redimensionadas.

Ajuste a moldura com um tamanho constante

A moldura dentro da janela é um pouco semelhante à janela, no sentido em que se redimensiona automaticamente, mesmo que se defina a largura e a altura dessa moldura.

import tkinter as tk

app = tk.Tk()

app.geometry("200x200")
app.resizable(0, 0)

backFrame = tk.Frame(master=app, width=200, height=200, bg="blue").pack()

button1 = tk.Button(master=backFrame, text="Button 1", bg="blue", fg="red").pack()
button2 = tk.Button(master=backFrame, text="Button 2", bg="blue", fg="green").pack()
button3 = tk.Label(master=backFrame, text="Button 3", bg="red", fg="blue").pack()

app.mainloop()

A GUI o que esperávamos é como a seguir,

Moldura de Tkinter Não Redimensionável

Mas o que recebemos depois de executar os códigos acima é,

Moldura de Tkinter Redimensionável

O quadro backFrame é redimensionado automaticamente para se ajustar aos widgets anexados a ele. Ou em outras palavras, os widgets dentro do backFrame controlam o tamanho do frame pai.

Você pode desabilitar o frame para redimensionar para seus widgets definindo pack_propagate(0).

O código correto para congelar o tamanho do frame é,

import tkinter as tk

app = tk.Tk()

app.geometry("200x200")
app.resizable(0, 0)

backFrame = tk.Frame(master=app, width=200, height=200, bg="blue")
backFrame.pack()
backFrame.propagate(0)

button1 = tk.Button(master=backFrame, text="Button 1", bg="blue", fg="red").pack()
button2 = tk.Button(master=backFrame, text="Button 2", bg="blue", fg="green").pack()
button3 = tk.Label(master=backFrame, text="Button 3", bg="red", fg="blue").pack()

app.mainloop()
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

Artigo relacionado - Tkinter Geometry