Como Criar uma Janela de Tkinter com um Tamanho Constante

Jinku Hu 25 junho 2020 17 fevereiro 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()
Author: 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

Artigo relacionado - Tkinter Geometry