En este post te enseñaré a alinear la ventana de Tkinter al programar interfaces gráficas con Python. Aprenderás a alinear la ventana en las esquinas a la izquierda o derecha, así como en el centro.
Te voy a mostrar varios ejemplos de alineación de ventana con Tkinter y a partir de ellos espero que puedas alinear la ventana según tus necesidades.
Si tú quieres, puedes alinear la ventana en las coordenadas que prefieras. Para ello invoca al método geometry
y pásale la X e Y en el siguiente formato:
raiz.geometry("+x+y")
En donde el signo +
igualmente puede ser un signo de -
si quieres que sea negativo. Por poner un ejemplo, si quieres colocar la ventana a 100 pixeles de la parte superior, y a 200 de la parte izquierda, sería así:
raiz.geometry("+200+100")
Con eso ya puedes alinear la ventana de Tkinter en Python en cualquier parte de la pantalla. A continuación te mostraré algunos ejemplos.
Te dejo algunas funciones para alinear la ventana en cualquier esquina, de modo que puede estar arriba a la derecha o izquierda, y abajo a la izquierda o derecha:
def alinear_esquina_superior_izquierda(r):
r.geometry("+0+0")
def alinear_esquina_inferior_derecha(r):
r.geometry("-0-0")
def alinear_esquina_inferior_izquierda(r):
r.geometry("+0-0")
def alinear_esquina_superior_derecha(r):
r.geometry("-0+0")
También existe un ejemplo para alinear la ventana de Tkinter en el centro, para ello tomamos las medidas de la ventana y la pantalla. La función queda así:
def centrar(r):
altura = r.winfo_reqheight()
anchura = r.winfo_reqwidth()
altura_pantalla = r.winfo_screenheight()
anchura_pantalla = r.winfo_screenwidth()
print(f"Altura: {altura}\nAnchura: {anchura}\nAltura de pantalla: {altura_pantalla}\nAnchura de pantalla: {anchura_pantalla}")
x = (anchura_pantalla // 2) - (anchura//2)
y = (altura_pantalla//2) - (altura//2)
r.geometry(f"+{x}+{y}")
Nota: en este caso //
es para dividir de manera entera, es decir, dividir y redondear.
El código completo de Python para poder alinear una ventana de Tkinter queda así, en este caso estoy centrando la ventana pero puedes invocar a las otras funciones o usar geometry
para alinearlo en donde tú prefieras:
import tkinter as tk
def alinear_esquina_superior_izquierda(r):
r.geometry("+0+0")
def alinear_esquina_inferior_derecha(r):
r.geometry("-0-0")
def alinear_esquina_inferior_izquierda(r):
r.geometry("+0-0")
def alinear_esquina_superior_derecha(r):
r.geometry("-0+0")
def centrar(r):
altura = r.winfo_reqheight()
anchura = r.winfo_reqwidth()
altura_pantalla = r.winfo_screenheight()
anchura_pantalla = r.winfo_screenwidth()
print(f"Altura: {altura}\nAnchura: {anchura}\nAltura de pantalla: {altura_pantalla}\nAnchura de pantalla: {anchura_pantalla}")
x = (anchura_pantalla // 2) - (anchura//2)
y = (altura_pantalla//2) - (altura//2)
r.geometry(f"+{x}+{y}")
raiz = tk.Tk()
raiz.etiqueta = tk.Label(
raiz, text="Me gusta estar centrado\nparzibyte.me")
raiz.etiqueta.pack(side="top")
app = tk.Frame()
app.pack()
raiz.update()
centrar(raiz)
app.mainloop()
Si te gusta Python puede que estés interesado en más posts dentro de mi blog.
Hoy te voy a presentar un creador de credenciales que acabo de programar y que…
Ya te enseñé cómo convertir una aplicación web de Vue 3 en una PWA. Al…
En este artículo voy a documentar la arquitectura que yo utilizo al trabajar con WebAssembly…
En un artículo anterior te enseñé a crear un PWA. Al final, cualquier aplicación que…
Al usar Comlink para trabajar con los workers usando JavaScript me han aparecido algunos errores…
En este artículo te voy a enseñar cómo usar un "top level await" esperando a…
Esta web usa cookies.