









Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Prepara tus exámenes
Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity
Prepara tus exámenes con los documentos que comparten otros estudiantes como tú en Docsity
Encuentra los documentos específicos para los exámenes de tu universidad
Estudia con lecciones y exámenes resueltos basados en los programas académicos de las mejores universidades
Responde a preguntas de exámenes reales y pon a prueba tu preparación
Consigue puntos base para descargar
Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium
Comunidad
Pide ayuda a la comunidad y resuelve tus dudas de estudio
Ebooks gratuitos
Descarga nuestras guías gratuitas sobre técnicas de estudio, métodos para controlar la ansiedad y consejos para la tesis preparadas por los tutores de Docsity
En este documento, se presenta una introducción básica sobre cómo utilizar Tkinter, una interfaz de Python para crear interfaces gráficas (GUI) mediante widgets, como botones, checkbuttons, etiquetas y entradas. Se explica cómo crear una ventana principal, establecer tamaños y posiciones, y cómo crear y manipular diferentes tipos de widgets. Se incluyen ejemplos de cómo crear botones y checkbuttons, y se muestra cómo asociar funciones a los botones. Además, se explica cómo utilizar variables de control y cómo crear etiquetas y entradas.
Tipo: Apuntes
1 / 16
Esta página no es visible en la vista previa
¡No te pierdas las partes importantes!










Autor: José Gerardo Carrillo González
Tkinter es la interfaz de Python con Tk, este es un kit de herramientas de widgets (código abierto y multiplataforma) para crear una interfaz gráfica de usuario (GUI). Para probar si Tkinter funciona escribimos en la pantalla IDLE: import tkinter tkinter._test() Importamos tkinter y con la instrucción tkinter._test() se debe desplegar una ventana, la cual muestra la versión que está instalada.
A continuación, las instrucciones para generar y manipular una ventana. root = Tk() Con esta instrucción generamos un objeto de clase Tk, este objeto genera la ventana que funciona como la raíz o base de la interfaz, en esta estarán contenidos los widgets. Ejemplos de widgets (los objetos que podemos encontrar en una ventana) son: botón, etiqueta, entrada, menú, mensaje, barra de desplazamiento, texto. Con el método title le ponemos título a la ventana: root.title("Título de la base") Con el método attributes establecemos el nivel de transparencia de la ventana, con 0.0 indicamos que es totalmente transparente, y con 1.0 totalmente opaca: root.attributes('-alpha',0.5) Con el método iconbitmap podemos reemplazar la figura que aparece en la esquina superior izquierda de la ventana por el icono de nuestra preferencia. El icono debe estar en formato .ico y debemos escribir la ruta donde se encuentra: root.iconbitmap('/la/ruta/a/nombre.ico') Con el método resizable indicamos si el ancho (width) y el largo (height) de la ventana se pueden reajustar o no. Con True (1) indicamos que es reajustable, con False (0) indicamos que no lo es. root.resizable(width = True, height = True)
Código 1. Salida:
Los controles en una aplicación GUI se conocen comúnmente como widgets, actualmente Tkinter cuanto con alrededor de 15 widgets. Como ejemplo de aplicación, a continuación los widgets para la implementación de la GUI de una calculadora sencilla Button Para crear un botón, lo haremos de la siguiente manera:
NOMBRE_B=Button(container, text='algo de texto', command=nombre_función) Para conocer todas las opciones de un botón, ver referencia [1]. De acuerdo con la sintaxis anterior: en NOMBRE_B asignamos el widget button, container es el nombre del componente principal (la ventana base) donde se colocará el botón, text es igual al texto que se desplegara en el botón, command es igual a un objeto de clase 'function', por lo que podemos poner el nombre de la función que se llamará al darle clic al botón. El nombre de la función la escribimos sin paréntesis para evitar llamar la función. Diseñaremos cuatro botones: el de sumar, restar, multiplicar, y dividir. A continuación, el de sumar (los otros tres son similares). b_sumar=Button(root, text='+', command=f_sum) b_sumar.place(x=37, y=37, width=37, height=37) b_sumar.state(['!disabled']) El nombre del botón es b_sumar, colocaremos el botón en la ventana base root, el texto que aparecerá como etiqueta del botón es '+', al presionar el botón se hace una llamada a la función f_sum la cual no tiene parámetros, por lo tanto se llama sin argumentos. En caso de que al llamar f_sum tuviéramos que pasarle argumentos, y ya que command debe ser igual a una referencia a la función, podemos usar una función intermedia que sería la que, al presionar el botón, llame la función con argumentos. Ejemplo: b_sumar=Button(root,text='+',command=f1) Definiendo f1 de la siguiente manera: def f1(): f_sum(p1,p2) Lo anterior para el caso en que al llamar f_sum se le tuvieran que pasar dos argumentos, p1 y p2. Otra manera de resolver esto sería: b_sumar=Button(root,text='+',command=lambda : f_sum(p1,p2)) Tenemos que command tiene asignado una referencia a la función anónima (que debe contener una única expresión). Al dar clic al botón, la función anónima se manda a llamar, la cual a su vez lo que hace es evaluar la siguiente expresión: f_sum(p1,p2). Para una explicación detallada ver referencia [2]. Con el método b_sumar.place(x,y,width,height) posicionamos b_sumar (con respecto a la ventana donde está contenido, es decir root) en las coordenadas (x,y), y le damos dimensiones a lo ancho (width) y a lo alto (height). Las unidades para posicionarlo, como para darle dimensión, son en pixeles. Con el método b_sumar.state(['!disabled']) estamos indicando que b_sumar este habilitado (se puede seleccionar), con b_sumar.state(['disabled']) estaría transparente y no se podría
c_restar=Checkbutton(root,text='Restar',variable=m2,command=h_restar) c_restar.place(x=375, y=37) Las variables de control, que se utilizan para manipular valores de los widgets, pueden ser de tipo numérico, cadena, y booleano. Para declarar una variable de control, asignarle un valor, y leer el valor que tiene, ver referencia [4]. En el ejemplo se han declarado m1 y m2 de tipo entero, y se les ha asignado un 1. Entry Entry es el widget que usaremos para mostrar y leer información. Para crearlo: NOMBRE_E=Entry(container, textvariable=nombre_dato) Las demás opciones de este widget en [5]. En NOMBRE_E asignamos el widget entry, container es el nombre de la ventana donde se colocará el widget, y textvariable es igual a la información (asignada en nombre_dato) que va a desplegar el widget Además de desplegar información, en el widget entry se puede introducir información, que se asigna en nombre_dato. Para nuestro ejemplo tenemos: e1=DoubleVar();e2=DoubleVar();s=DoubleVar() entrada1=Entry(root, textvariable=e1) entrada2=Entry(root, textvariable=e2) entrada1.place(x=373, y=373,width=37,height=37) entrada2.place(x=375, y=373,width=37,height=37) salida=Entry(root, textvariable=s) salida.place(x=377, y=37*3,width=37,height=37) Tenemos que entrada1 y entrada2 las usaremos como entradas de información, y que salida será donde desplegaremos un resultado. A e1 y e2 se les asignara el valor de los operandos, y a s el resultado de la operación. Las variables e1, e2, y s se han declarado de tipo flotante. Label A pesar de no ser usado en el ejemplo de la calculadora, el widget Label se usa para mostrar un texto. La sintaxis: NOMBRE_L=Label(container, text='algo de texto', font=("fuente", x)) El resto de las opciones para este widget en [6]. En NOMBRE_L asignamos el widget label, container es el nombre de la ventana donde se colocará la etiqueta, text es igual al texto que se
desplegará (o igual al nombre que hace referencia a un objeto de clase str), font es igual a ("fuente", x), donde "fuente" es el estilo de fuente del texto asignado en text y x es el tamaño de fuente. Funciones a llamar con los widgets Las funciones que mandamos a llamar con los widgets son: def f_sum(): s.set(e1.get() + e2.get()) def f_res(): s.set(e1.get() - e2.get()) def f_mul(): s.set(e1.get() * e2.get()) def f_div(): if e2.get()==0: messagebox.showwarning(title='Error', message= 'Zero Division Error') return s.set(e1.get() / e2.get()) def h_sumar(): if m1.get()==0: b_sumar.state(['disabled']) else: b_sumar.state(['!disabled']) def h_restar(): if m2.get()==0: b_restar.state(['disabled']) else: b_restar.state(['!disabled']) def limpiar(): e1.set(0) e2.set(0) s.set('') La funcion f_sum() lo que hace es sumar e1 y e2, que son las variables de control de los widgets entrada1 y entrada2, respectivamente, y el resultado es asignado en s, que es la variable de control del widget salida. Con la función f_res() se hace el equivalente a s=e1-e2, con f_mul() a s=e1*e2, y con f_div() a s=e1/e2. Además, en f_div si e2=0 no será posible hacer la división, por lo que desplegamos un mensaje y evitamos hacer la división terminando la función con return. Para desplegar el mensaje lo hacemos con:
Programar el juego del ahorcado y presentarlo con una interfaz.
[1] Tutorialspoint, “Python - Tkinter Button.” [Online]. Available: https://www.tutorialspoint.com/python/tk_button.htm. [Accessed: 22-Nov-2021]. [2] Stackoverflow, “Why is the command bound to a Button or event executed when declared?” [Online]. Available: https://stackoverflow.com/questions/5767228/why-is-the-command- bound-to-a-button-or-event-executed-when-declared. [Accessed: 22-Nov-2021]. [3] Tutorialspoint, “Python - Tkinter Checkbutton.” [Online]. Available: https://www.tutorialspoint.com/python/tk_checkbutton.htm. [Accessed: 22-Nov-2021]. [4] Python-para-impacientes., “Variables de control en Tkinter.” [Online]. Available: https://python-para-impacientes.blogspot.com/2016/02/variables-de-control-en- tkinter.html. [Accessed: 22-Nov-2021]. [5] Tutorialspoint, “Python - Tkinter Entry.” [Online]. Available: https://www.tutorialspoint.com/python/tk_entry.htm. [Accessed: 22-Nov-2021]. [6] Tutorialspoint, “Python - Tkinter Label.” [Online]. Available: https://www.tutorialspoint.com/python/tk_label.htm. [Accessed: 22-Nov-2021].