Guías de tkinter
Tkinter viene incluido con Python, pero casi sin manual, así que las mismas preguntas se repiten una y otra vez — normalmente con una respuesta que funciona y un motivo que nadie explica. Cada página empieza por el código y sigue por la parte que suele fallar.
- ¿Cómo soluciono ModuleNotFoundError: No module named 'tkinter'? Tkinter viene con Python, pero en Linux y en Homebrew se instala por separado. La solución para cada sistema, cómo comprobar si de verdad falta y por qué un entorno virtual hereda el problema.
- ¿Por qué tkinter no funciona en VS Code? Casi siempre tkinter está bien y VS Code apunta a otro Python. Cómo comprobar el intérprete seleccionado, distinguir un subrayado de Pylance de un error real, y qué hacer bajo WSL o SSH.
- ¿Cómo cambio el tamaño de la ventana en tkinter? Fija el tamaño de una ventana de tkinter con root.geometry("520x380"), colócala en pantalla, impide que se redimensione y céntrala, además de por qué a veces la ventana te ignora.
- ¿Cómo obtengo el valor de un Entry en tkinter? Lee un Entry de tkinter con .get() o enlaza un StringVar. Incluye el motivo por el que el valor sale vacío —leerlo al construir la ventana en vez de dentro del manejador— y cómo limpiar o precargar el campo.
- ¿Cómo muestro texto en tkinter? Muestra texto en tkinter con un Label, cámbialo después con config() o un StringVar, y aprende cuándo conviene recurrir al widget Text. Incluye por qué tu label no se actualiza nunca.
- ¿Cómo abro otra ventana en tkinter? Abre una segunda ventana de tkinter con tk.Toplevel —nunca con un segundo tk.Tk()—, mantenla al frente, hazla modal y pasa datos de una ventana a la otra.
- ¿Cómo obtengo el valor del Radiobutton seleccionado en tkinter? Los radio buttons se agrupan compartiendo una variable, y la elección se lee de esa variable. Incluye por qué aparecen todos marcados a la vez, por qué dos grupos distintos se desmarcan entre sí y cómo empezar sin ninguno seleccionado.
- ¿Cómo obtengo el valor de un checkbox (Checkbutton) en tkinter? Un Checkbutton informa a través de una variable, así que sin una no hay nada que leer. Cómo asociarle un IntVar o un BooleanVar, qué devuelve .get() y cómo usar tus propios valores en lugar de 1 y 0.
- ¿Cómo obtengo el valor seleccionado de un Combobox en tkinter? Lee un Combobox de ttk con .get(), reacciona con el evento <<ComboboxSelected>> y evita que escriban su propia respuesta con state="readonly". Incluye por qué el cuadro aparece vacío al principio.
- ¿Cómo uso un OptionMenu en tkinter? Un OptionMenu es un desplegable construido sobre una variable: la variable guarda la elección y da la etiqueta del botón. Cómo poner un valor por defecto, leer la elección y rehacer la lista en tiempo de ejecución.
- ¿Cómo uso un Spinbox en tkinter? Un Spinbox es un campo numérico con flechas: el rango se pone con from_ y to, el paso con increment y el valor se lee con .get(). Incluye por qué el valor vuelve como texto y cómo recorrer palabras en lugar de números.
- ¿Cómo obtengo el valor de un slider (Scale) en tkinter? Lee un Scale de tkinter con .get(), o toma el valor que recibe la función del command. Incluye la trampa de que esa función recibe texto, la diferencia entre tk.Scale y ttk.Scale y cómo controlar el paso.
- ¿Cómo agrego un scrollbar o barra de desplazamiento en tkinter? Una barra de desplazamiento de tkinter necesita conexión en los dos sentidos: la barra mueve el widget y el widget informa de vuelta. Si falta una, la barra aparece pero no se mueve. El patrón para listbox, text y canvas.
- ¿Cómo agrego una línea separadora en tkinter? Un ttk.Separator dibuja una división entre secciones, pero no tiene largo propio: sin fill mide un píxel por un píxel y es invisible. Cómo darle tamaño, en horizontal y en vertical.
- ¿Cómo agrupo widgets con un LabelFrame en tkinter? Un LabelFrame es un recuadro con borde y título que contiene otros widgets. Cómo poner widgets dentro, por qué importa el padre y cuándo conviene más un Frame normal o un separador.
- ¿Cómo agrego un calendario o selector de fecha a tkinter? Tkinter no trae ningún campo de fecha. Instala tkcalendar para tener un DateEntry con calendario desplegable, léelo con .get_date() y cambia el formato mostrado sin cambiar lo que recibe tu código.
- ¿Cómo hago un frame con scroll en tkinter? Un Frame de tkinter no se puede desplazar. La solución habitual es un Canvas que contiene al frame, más una barra y un binding que mantiene al día la región de scroll. Incluye las versiones de una línea en CustomTkinter y ttkbootstrap.
- ¿Cómo agrego un medidor circular en tkinter? Tkinter puro no trae ningún medidor, pero ttkbootstrap incluye el widget Meter: un dial circular con el número en el centro. Cómo construirlo, actualizarlo mientras avanza el trabajo y leer su valor.
O sáltate la búsqueda: diseña la ventana y lee el Python que genera.
Abrir el diseñador de tkinter →