Tutorial de Tkinter - Botón
El widget de botones de Tkinter es bastante similar al widget de etiquetas de Tkinter. Tiene casi las mismas opciones que las de la etiqueta, excepto que tiene una opción extra default. Demostraremos los detalles de esta opción default después de un ejemplo básico de botón.
Podrías generar dos botones más simples usando los códigos de demostración de abajo.
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
button1 = tk.Button(app, text="Python Label 1")
button2 = tk.Button(app, text="Python Label 2")
button1.pack(side=tk.LEFT)
button2.pack(side=tk.LEFT)
app.mainloop()
La ventana con dos botones adyacentes entre sí se muestra después de ejecutar los códigos.

Opción default del botón Tkinter
La opción default en el botón dice que el botón es el botón por defecto en la GUI, por ejemplo, el que se invoca automáticamente cuando el usuario presiona la tecla Enter o Return.
Comando Tkinter Button Callback
La opción command invoca la función de devolución de llamada cuando el botón es presionado.
from sys import version_info
if version_info.major == 2:
import Tkinter as tk
elif version_info.major == 3:
import tkinter as tk
app = tk.Tk()
labelExample = tk.Button(app, text="0")
def change_label_number():
counter = int(str(labelExample["text"]))
counter += 1
labelExample.config(text=str(counter))
buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)
buttonExample.pack()
labelExample.pack()
app.mainloop()
Crea un botón y un widget de etiqueta en la ventana principal. El número en el texto de la etiqueta se incrementa en 1 cada vez que se pulsa el botón.

def change_label_number():
counter = int(str(labelExample["text"]))
counter += 1
labelExample.config(text=str(counter))
El change_label_number es la función que se invoca cuando se hace clic en el botón. Obtiene el número de etiqueta y luego establece la etiqueta incrementada en uno.
buttonExample = tk.Button(app, text="Increase", width=30, command=change_label_number)
Construye el enlace entre el botón y su función de devolución de llamada.
Función de retrollamada del comando del botón de Tkinter con argumentos
Necesitas un objeto parcial de functools si necesitas pasar argumentos a las funciones de devolución de llamada. Los objetos parciales son objetos llamables con los argumentos posicionales args y los argumentos de palabras clave keywords.
El siguiente fragmento de código demuestra cómo usar esta función parcial en el comando button.
def change_label_number(num):
counter = int(str(labelExample["text"]))
counter += num
labelExample.config(text=str(counter))
buttonExample = tk.Button(
app, text="Increase", width=30, command=partial(change_label_number, 2)
)
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook