Hola.
Yo también estoy aprendiendo a programar con interfaz gráfica en Python,
y te cuento que comencé con las mismas dudas que vos.
Hace 3 días más o menos que estoy con esto, y sin embargo le estoy encontrando la vuelta.
Tcl y Tk están relacionados con interfaces gráficas, pero no sé bien de dónde vienen esas ''cosas extrañas''. Sin embargo,
no tiene ninguna importancia. N
o te distraigas tratando de descifrar qué son, ni de donde vienen.
Lo que tenés que tener claro es que esas ''cosas extrañas'' han inspirado y servido de base a la librería
TKinter de Python.
Si lo que te interesa es programar con interfaz gráfica en Python, hay muchísimas librerías disponibles. Una muy famosa, que al parecer da muy buenos resultados, es
wxPython, pero no sé nada de ella.
TKinter es la
librería por defecto para desarrollar interfaz gráfica que viene integrada con
Python.
Según qué versión de Python estés usando, puede que se cargue distinto.
En la versión 3.* que uso yo, se carga con
from tkinter import *
En versiones anteriores se carga con
Tkinter en vez de
tkinter, o sea,
cambia la T mayúscula inicial.
Así que, cuando vayas a ver tutoriales y manuales, tenés que tener en cuenta que están escritos para las versiones 2.* de Python, que usan la forma vieja de importar tkinter.
Lo único que hay que hacer es copiar los ejemplos, y luego modifcarlos en esa sola letra que ha cambiado.
Otro malestar en cuanto a los ejemplos, es que hacen uso de la sentencia print, que al pasar a la vesión 3.* neceistan paréntesis, y entonces para que anden los ejemplos hay que modificar el programa en todas las líneas donde aparece la sentencia print.
Salvo esos detalles, todo lo demás funciona sin cambios, por lo general.
Te recomiendo el siguiente tutorial, que es muy básico, fácil, y te lleva de la mano en el aprendizaje de tkinter. Tutorial de TKinter (en inglés)
Espero que no tengas problemas con el inglés, porque realmente el tutorial está muy bueno.
Una vez que hayas visto todos los ejemplos (te recomiendo mirar de a uno, con paciencia), te recomiendo que te quedes con una versión del ejemplo tt079.py, que contiene ingredientes básicos que me han parecido muy importantes.
En su momento verás que uno puede desarrollar la aplicación metiéndola toda en una
class de Python. Hacer esto es muy recomendable, y todos tus programas debieran estar enfocados así, al usar TKinter.
Otro detalle es el uso de la construcción
lambda de
Python.
No sé cómo te llevás con eso de
lambda, pero en todo caso no hay que complicarse la cabeza, y tratar de entender cómo se usa. Al revisar los ejemplos y ver las explicaciones, te vas a dar cuenta que es fácil usar
lambda cuando hace falta, sin complicarse la mente demasiado.
Básicamente se usa para atar botones u otros elementos gráficos de la aplicación a determinadas funciones o métodos, de una forma correcta, evitando ciertos errores...
A partir del ejemplo tt079.py, vas a poder ir agregando y modificando elementos, y vas a ver que de a poco dominás el asunto.
Una vez que te hayas terminado ese tutorial, te recomiendo echarle un vistazo a este otro, que es una documentación bastante clara y completa sobre tkinter:
Introducción a TKinter (en inglés)
Cuando veas este segundo tutorial, te recomiendo tener en cuenta que algunos ejemplos pueden estar mal enfocados, respecto al programa tt079.py del primer tutorial.
Por ejemplo, puede que no usen el enfoque de clases para la aplicación, y puede que no expliquen muy bien lo del lambda para atar correctamente las aplicaciones a los widgets (botones, checkbox, etc.)
Te recomiendo que traduzcas esos ejemplos al enfoque del tt079.py, porque es lo que te va a resultar útil en el futuro.
Cualquier consulta que tengas, consultame.
Yo también estoy aprendiendo, quizá podamos ayudarnos mutuamente.
Saludos