Python | Agregar estilo al botón tkinter

Tkinter es una biblioteca estándar de Python que se utiliza para crear aplicaciones GUI (interfaz gráfica de usuario). Es uno de los paquetes de Python más utilizados. Tkinter es compatible con gráficos tradicionales y modernos con la ayuda de los widgets temáticos de Tk. Todos los widgets que Tkinter también tiene disponibles en tkinter.ttk .
Agregar estilo en un botón tkinter.ttk es un poco espeluznante porque no admite la implementación directa. Para agregar estilo en un ttk.Button, primero debemos crear un objeto de clase de estilo que esté disponible en tkinter.ttk.
 

Podemos crear ttk.Button siguiendo los siguientes pasos:

btn = ttk.Button(master, option = value, ...)

ttk.Opciones del botón – 

comando: Una función que se llamará cuando se presione el botón. 
texto: Texto que aparece en el Botón. 
image: Imagen que aparecerá en el Botón. 
estilo: estilo que se usará para representar este botón.

Para agregar estilo en el ttk.Button, no podemos pasar directamente el valor en las opciones. En primer lugar, tenemos que crear un objeto Style que se puede crear de la siguiente manera: 

 style = ttk.Style()

El siguiente código agregará estilo solo a los botones seleccionados, es decir, solo se cambiarán aquellos botones en los que pasaremos la opción de estilo.
Código #1: 

Python3

# Import Required Module
from tkinter import *
from tkinter.ttk import *
 
# Create Object
root = Tk()
 
# Set geometry (widthxheight)
root.geometry('100x100')
 
# This will create style object
style = Style()
 
# This will be adding style, and
# naming that style variable as
# W.Tbutton (TButton is used for ttk.Button).
style.configure('W.TButton', font =
               ('calibri', 10, 'bold', 'underline'),
                foreground = 'red')
 
# Style will be reflected only on
# this button because we are providing
# style only on this Button.
''' Button 1'''
btn1 = Button(root, text = 'Quit !',
                style = 'W.TButton',
             command = root.destroy)
btn1.grid(row = 0, column = 3, padx = 100)
 
''' Button 2'''
 
btn2 = Button(root, text = 'Click me !', command = None)
btn2.grid(row = 1, column = 3, pady = 10, padx = 100)
 
# Execute Tkinter
root.mainloop()

Producción: 
 

Solo se aplicará estilo a un botón porque en el código anterior proporcionamos estilo solo en un botón.
 
Código #2 Aplicar estilo en todos los botones disponibles 

Python3

# Import Required Module
from tkinter import *
from tkinter.ttk import *
 
# Create Root Object
root = Tk()
 
# Set Geometry(widthxheight)
root.geometry('100x100')
 
# Create style Object
style = Style()
 
 
# Will add style to every available button
# even though we are not passing style
# to every button widget.
style.configure('TButton', font =
               ('calibri', 10, 'bold', 'underline'),
                foreground = 'red')
# button 1
btn1 = Button(root, text = 'Quit !',
                  style = 'TButton',
             command = root.destroy)
 
btn1.grid(row = 0, column = 3, padx = 100)
 
# button 2
btn2 = Button(root, text = 'Click me !', command = None)
btn2.grid(row = 1, column = 3, pady = 10, padx = 100)
 
# Execute Tkinter
root.mainloop()

Producción: 
 

Ahora, si desea cambiar la apariencia de los botones con el movimiento del mouse, es decir, ahora, cuando pasemos el mouse sobre el botón, cambiará de color, cuando presionemos, cambiará de color, y así sucesivamente. 
  
Código # 3 Cambiar color al pasar el mouse 

Python3

# Import Required Module
from tkinter import *
from tkinter.ttk import *
 
# Create Root Object
root = Tk()
# Set Geometry(widthxheight)
root.geometry('500x500')
 
# Create style Object
style = Style()
 
style.configure('TButton', font =
               ('calibri', 20, 'bold'),
                    borderwidth = '4')
 
# Changes will be reflected
# by the movement of mouse.
style.map('TButton', foreground = [('active', '!disabled', 'green')],
                     background = [('active', 'black')])
 
# button 1
btn1 = Button(root, text = 'Quit !', command = root.destroy)
btn1.grid(row = 0, column = 3, padx = 100)
 
# button 2
btn2 = Button(root, text = 'Click me !', command = None)
btn2.grid(row = 1, column = 3, pady = 10, padx = 100)
 
# Execute Tkinter
root.mainloop()

Producción: 
 

Publicación traducida automáticamente

Artículo escrito por sanjeev2552 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *