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.
resizable(self, width=None, height=None)
- Instrua o gerenciador de janelas se essa largura pode ser redimensionada em LARGURA ou ALTURA. Ambos os valores são valores booleanos.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,
Mas o que recebemos depois de executar os códigos acima é,
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)
.
propagate(self, flag=['_noarg_'])
-Definir ou obter o status para propagação de informações geométricas. Um argumento booleano especifica se a informação geométrica dos escravos irá determinar o tamanho deste widget. Se nenhum argumento for dado, a configuração atual será retornada.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()
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