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