Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Introducción a la creación de interfaces gráficas simples usando Tkinter en Python, Apuntes de Algoritmos y Programación

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

2021/2022

Subido el 26/08/2022

jose-gerardo-carrillo-gonzalez
jose-gerardo-carrillo-gonzalez 🇲🇽

4 documentos

1 / 16

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
TUTORIAL 5
Lenguaje de programación: Python
Autor: José Gerardo Carrillo González
Contenido:
Tkinter ............................................................................................................................................. 2
Ventana principal ........................................................................................................................ 2
Widgets ....................................................................................................................................... 4
Button ...................................................................................................................................... 4
Checkbutton ............................................................................................................................ 6
Entry ........................................................................................................................................ 7
Label ....................................................................................................................................... 7
Funciones a llamar con los widgets ........................................................................................ 8
Para practicar ................................................................................................................................ 13
Ejemplo 1 .................................................................................................................................. 13
Referencias .................................................................................................................................... 16
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Vista previa parcial del texto

¡Descarga Introducción a la creación de interfaces gráficas simples usando Tkinter en Python y más Apuntes en PDF de Algoritmos y Programación solo en Docsity!

Lenguaje de programación: Python

Autor: José Gerardo Carrillo González

Tkinter

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.

Ventana principal

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:

Widgets

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:

  • TUTORIAL
  • Tkinter Contenido:
    • Ventana principal
    • Widgets
      • Button......................................................................................................................................
      • Checkbutton
      • Entry........................................................................................................................................
      • Label
      • Funciones a llamar con los widgets
  • Para practicar
    • Ejemplo
  • Referencias
  • Código

Para practicar

Ejemplo 1

Programar el juego del ahorcado y presentarlo con una interfaz.

Referencias

[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].