¿Cómo agrego un medidor circular en tkinter?
En la biblioteca estándar no hay medidores: lo más parecido es una barra de progreso. ttkbootstrap incluye Meter, un dial circular con el valor escrito en el centro y un texto opcional debajo.
# pip install ttkbootstrap
import ttkbootstrap as ttkb
app = ttkb.Window(themename="litera")
gauge = ttkb.Meter(
app,
amountused=42,
amounttotal=100,
subtext="CPU",
metertype="semi", # o "full" para el anillo completo
bootstyle="info",
)
gauge.pack(padx=20, pady=20)
app.mainloop() Actualizarlo mientras avanza el trabajo
configure pone un valor nuevo y step lo mueve una cantidad relativa a donde está. Los dos redibujan el dial de inmediato, así que un medidor gobernado desde un bucle necesita el cuidado de siempre para no bloquear la interfaz, pero nada especial por ser un medidor.
gauge.configure(amountused=75) # saltar a un valor
gauge.step(5) # avanzar un poco -> 80Leer el valor
Pide la opción con cget, no el atributo. Escribir gauge.amountused parece lo natural y lanza AttributeError en las versiones actuales, lo que sorprende a mucha gente porque bastantes ejemplos de internet se escribieron para una versión anterior.
También hay una variable detrás del dial, útil cuando algo más debe seguir el valor. Las versiones recientes la renombraron: amount_used_var es la actual, y la antigua amountusedvar todavía funciona pero avisa de que desaparece en la 3.0.
gauge.cget("amountused") # 80.0
gauge.amount_used_var.get() # 80.0 — el DoubleVar que hay detrásDejar que el usuario lo arrastre
Un Meter es solo de lectura por defecto. Pasarle interactive=True lo convierte en un control que se puede arrastrar, lo que sirve para un volumen o un brillo, pero no es lo que quieres para algo que informa de un progreso: un dial arrastrable ahí solo invita a la confusión.
Cuándo conviene más una barra de progreso
Un medidor se gana su espacio en un panel de control, donde el número es lo importante y hay sitio para un dial. Para un "esto va a tardar", una barra de progreso normal se lee más rápido, ocupa una fracción del espacio y no necesita ningún paquete extra.
Hacerlo sin buscarlo
El Meter está en la paleta cuando el proyecto apunta a ttkbootstrap, con el valor, el total y el texto como campos del inspector. Si cambias el proyecto a tkinter puro o a CustomTkinter, el diseñador te avisa de que el widget no tiene equivalente ahí, en vez de exportar algo que no va a importar.
Diseña la ventana visualmente y ve el código Python generado sobre la marcha.
Abrir el diseñador de tkinter →