Tkinter Designer

← Guías de tkinter

¿Cómo cambio el tamaño de la ventana en tkinter?

Una sola llamada, antes de mainloop(). La cadena es ancho por alto en píxeles, con una x minúscula en medio: no es un signo de multiplicación, y no es una tupla.

import tkinter as tk

root = tk.Tk()
root.title("Mi aplicación")
root.geometry("520x380")

root.mainloop()

Colocarla además de dimensionarla

La misma cadena admite una posición opcional: "520x380+300+120" abre la ventana a 300 píxeles del borde izquierdo de la pantalla y 120 desde arriba. Si omites la posición, decide el gestor de ventanas, que es el comportamiento normal y casi siempre la mejor opción.

root.geometry("520x380+300+120")

Centrarla en la pantalla

No existe una opción para centrar, así que se calcula a partir del tamaño de la pantalla. Pregúntale a la ventana cuánto mide la pantalla, resta tu propio tamaño y divide entre dos.

w, h = 520, 380
x = (root.winfo_screenwidth() - w) // 2
y = (root.winfo_screenheight() - h) // 2
root.geometry(f"{w}x{h}+{x}+{y}")

Impedir que se redimensione

resizable recibe dos booleanos, uno por eje, así que puedes bloquear el alto y seguir permitiendo el ancho. minsize y maxsize establecen límites en lugar de congelarla del todo.

root.resizable(False, False)   # ninguna de las dos direcciones
root.minsize(400, 300)         # o solo poner un mínimo

Cuando la ventana ignora el tamaño que pediste

Una ventana dimensionada con geometry() crece igualmente si un widget de dentro no cabe: tkinter trata tu número como punto de partida, no como límite estricto. Si la ventana se abre más grande de lo que pediste, algo de dentro está exigiendo ese espacio. Usa pack_propagate(False) o grid_propagate(False) en el contenedor para impedirlo, o dale un tamaño menor al widget culpable.

La otra sorpresa habitual: llamar a geometry() después de que haya arrancado mainloop() no se nota, porque mainloop() bloquea. Hazlo antes.

Hacerlo sin buscarlo

El ancho y el alto son dos campos del inspector, y el lienzo tiene ese tamaño mientras dibujas, así que nunca vas adivinando. La posición de apertura también está ahí —dejarla al sistema, centrarla o fijar coordenadas— y la exportación incluye la llamada a geometry() correspondiente.

Diseña la ventana visualmente y ve el código Python generado sobre la marcha.

Abrir el diseñador de tkinter →

Preguntas relacionadas