Lección 11 · 11 de 20
Deslizadores · tkinter
Elija números arrastrando con Scale de tkinter: horizontal y vertical, con título, rango, paso y valor visible, y también ttk.Scale.

Un deslizador (Scale) elige un número entre dos límites arrastrando el cursor. tk.Scale muestra su título (label) y, encima del cursor, el valor actual.
El vertical va de `from_=30`, arriba, a `to=10`, abajo (from_ lleva guion bajo porque from es una palabra reservada de Python). `resolution=0.5` es el paso: el valor avanza de medio en medio grado, y length es el largo en píxeles. Se coloca primero, con pack(side="right"), para que ocupe el borde derecho.
Cada deslizador está unido a una variable con variable=: IntVar(value=70) y DoubleVar(value=21.5) deciden dónde empieza el cursor. Como con StringVar, volume.get() lee el valor y set() mueve el cursor.
`ttk.Scale` tiene el aspecto del sistema, pero no muestra texto y su valor siempre es decimal. Por eso una etiqueta enseña el zoom con un decimal (:.1f); su command recibe el valor nuevo con cada movimiento. Los otros dos avisan con trace_add.
En DMarlon Studio es el Deslizador de la paleta: el título, los límites, el paso, el valor, la orientación y si se muestra el valor se cambian en el inspector, y el estudio lo escribe como tk.Scale unido a una DoubleVar.
Código · main.py
import tkinter as tkfrom tkinter import ttkroot = tk.Tk()root.title("Sliders")root.geometry("520x320")# tk.Scale vertical: from_ at the top, to at the bottom.temp = tk.DoubleVar(value=21.5)tk.Scale(root, label="°C", from_=30, to=10, resolution=0.5, orient="vertical", variable=temp, length=250).pack(side="right", padx=28, pady=16)# tk.Scale horizontal: it shows its title and its current value.volume = tk.IntVar(value=70)tk.Scale(root, label="Volume", from_=0, to=100, orient="horizontal", variable=volume, length=320).pack(anchor="w", padx=24, pady=(18, 12))# ttk.Scale: the system look, without text; a label shows the value.zoom = tk.DoubleVar(value=1.5)ttk.Label(root, text="Zoom").pack(anchor="w", padx=24)ttk.Scale(root, from_=0.5, to=3, variable=zoom, length=320, command=lambda value: show()).pack(anchor="w", padx=24)summary = ttk.Label(root, font=("Helvetica", 14), foreground="#1d4ed8")summary.pack(anchor="w", padx=24, pady=18)def show(*args): summary.config(text=f"Volume {volume.get()} · {temp.get()} °C" f" · zoom {zoom.get():.1f}x")volume.trace_add("write", show)temp.trace_add("write", show)show()root.mainloop()Para recordar
from_ytoson los límites;resolution, el paso.orientes"horizontal"o"vertical".- La variable unida decide dónde empieza el cursor.
ttk.Scaleno muestra el valor: enséñelo con una etiqueta.
Ejercicio
Añada un deslizador «Brightness» de 0 a 10 con paso 2 y muestre su valor en el resumen.