Lección 3 · 3 de 20
Botones y su acción · tkinter
Un botón de tkinter con command: cada clic llama a una función que actualiza un contador. También, botones desactivados con state.

count = 5 guarda el número de clics. Empieza en 5 para que la etiqueta enseñe ya un valor al abrir la ventana: text=f"Clicks: {count}".
Un botón (ttk.Button) lleva su texto y, en `command`, la función que se ejecuta al pulsarlo. Se pasa el nombre de la función, add, sin paréntesis: con add() se llamaría una sola vez, al crear el botón, y no con cada clic.
add() suma uno y cambia el texto con `label.config(text=...)`: config (o configure) modifica cualquier opción de un componente ya creado. global count hace falta porque la función cambia una variable de fuera. reset() la pone a cero.
Los dos botones van dentro de un ttk.Frame y se colocan con pack(side="left"), uno al lado del otro (los marcos y pack se ven a fondo más adelante). El último lleva `state="disabled"`: se ve en gris y no responde.
En DMarlon Studio es el Botón de la paleta. En el inspector se le asigna el evento *Al pulsar* y el estudio escribe el método al que apunta command; usted solo escribe lo que hace.
Código · main.py
import tkinter as tkfrom tkinter import ttkroot = tk.Tk()root.title("Click counter")root.geometry("400x250")count = 5 # starts at 5, so the label already shows a numberlabel = ttk.Label(root, text=f"Clicks: {count}", font=("Helvetica", 24))label.pack(pady=(34, 20))def add(): global count count += 1 label.config(text=f"Clicks: {count}")def reset(): global count count = 0 label.config(text=f"Clicks: {count}")# A frame keeps the two buttons side by side.row = ttk.Frame(root)row.pack()ttk.Button(row, text="Add one", command=add).pack(side="left", padx=6)ttk.Button(row, text="Reset", command=reset).pack(side="left", padx=6)# A disabled button: visible, but it cannot be clicked.ttk.Button(root, text="Not available", state="disabled").pack(pady=18)root.mainloop()Para recordar
commandrecibe la función, sin paréntesis.config(text=...)cambia un componente ya creado.state="disabled"desactiva un botón;"normal"lo vuelve a activar.globalpermite cambiar una variable de fuera desde una función.
Ejercicio
Añada un botón «Subtract one» que reste uno al contador sin dejarlo bajar de cero.