Requisito previo: Python GUI – tkinter , cambiar el tamaño de los botones dinámicamente al cambiar el tamaño de una ventana usando Tkinter
En este artículo, veremos cómo hacer que el tamaño del texto del botón sea dinámico. Dinámico significa que siempre que cambie el tamaño del botón, también cambiará el tamaño del texto del botón. En Tkinter no hay una función incorporada que cambie el tamaño del texto del botón de forma dinámica.
Acercarse:
- Crear botón y establecer pegajoso en todas las direcciones
- Establezca el enlace, lo que hará el enlace, cada vez que cambie el tamaño del botón, llamará a la función de cambio de tamaño que crearemos más adelante.
- Dentro de la función de cambio de tamaño, tendremos una condición diferente, dependiendo de la geometría/tamaño de la ventana principal.
- Establecer configuración de fila y columna
Entendamos con la implementación paso a paso:
Paso 1: crea una ventana normal de Tkinter.
Python3
# Import module from tkinter import * # Create object root = Tk() # Adjust size root.geometry("400x400") # Execute tkinter root.mainloop()
Producción:
Paso 2: crea un botón dentro de la ventana principal.
Python3
# Import module from tkinter import * # Create object root = Tk() # Adjust size root.geometry("400x400") # Create Buttons button_1 = Button(root , text = "Button 1") # Set grid button_1.grid(row = 0,column = 0) # Execute tkinter root.mainloop()
Producción:
Paso 3: cambiar el tamaño del texto del botón
Dentro de la función de cambio de tamaño, el valor «e» indicará el ancho y el alto de la ventana principal.
Python3
# resize button text size def resize(e): # get window width size = e.width/10 # define text size on different condition # if window height is greater # than 300 and less than 400 (set font size 40) if e.height <= 400 and e.height > 300: button_1.config(font = ("Helvetica", 40)) # if window height is greater than # 200 and less than 300 (set font size 30) elif e.height < 300 and e.height > 200: button_1.config(font = ("Helvetica", 30)) # if window height is less than 200 (set font size 40) elif e.height < 200: button_1.config(font = ("Helvetica", 40))
A continuación se muestra la implementación completa:
Python3
# Import module from tkinter import * # Create object root = Tk() # Adjust size root.geometry("400x400") # Specify Grid Grid.columnconfigure(root, index = 0, weight = 1) Grid.rowconfigure(root, 0, weight = 1) # Create Buttons button_1 = Button(root, text = "Button 1") # Set grid button_1.grid(row = 0, column = 0, sticky = "NSEW") # resize button text size def resize(e): # get window width size = e.width/10 # define text size on different condition # if window height is greater # than 300 and less than 400 (set font size 40) if e.height <= 400 and e.height > 300: button_1.config(font = ("Helvetica", 40)) # if window height is greater than # 200 and less than 300 (set font size 30) elif e.height < 300 and e.height > 200: button_1.config(font = ("Helvetica", 30)) # if window height is less # than 200 (set font size 40) elif e.height < 200: button_1.config(font = ("Helvetica", 40)) # it will call resize function # when window size will change root.bind('<Configure>', resize) # Execute tkinter root.mainloop()
Producción: