0% encontró este documento útil (0 votos)
96 vistas65 páginas

Semana 5

Este documento presenta un curso sobre programación orientada a objetos con Python y la creación de interfaces gráficas de usuario (GUI) usando Tkinter. En la primera sección, se explican conceptos básicos de POO como clases, objetos, atributos y métodos, y se proveen varios ejemplos ilustrativos. La segunda sección introduce Tkinter, la librería de Python para desarrollar GUIs, y describe widgets comunes como botones, etiquetas y cuadros de texto. El documento proporciona una guía detallada para aplicar POO y Tkinter en
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
96 vistas65 páginas

Semana 5

Este documento presenta un curso sobre programación orientada a objetos con Python y la creación de interfaces gráficas de usuario (GUI) usando Tkinter. En la primera sección, se explican conceptos básicos de POO como clases, objetos, atributos y métodos, y se proveen varios ejemplos ilustrativos. La segunda sección introduce Tkinter, la librería de Python para desarrollar GUIs, y describe widgets comunes como botones, etiquetas y cuadros de texto. El documento proporciona una guía detallada para aplicar POO y Tkinter en
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 65

Unidad 1 - Introducción al computador de placa reducida

(Single Board Computer – SBC)

Semana 5 (S1-S2) – Tkinter con Python.

Curso: Sistemas Embebidos


Profesor: Mag. Ing. Rubén Acosta UPC - Universidad Peruana de Ciencias Aplicadas
Temario
1.-Programación orientada a objetos con Python
2.- Interfaz gráfica de Usuario (GUI) -Tkinter
1.-Programación orientada a objetos con Python
o Un paradigma de programación es un modelo o estilo de programación de software.

o P. imperativa
Son abstracciones de alguna secuencia de instrucciones que
especifican con detalle el orden de ejecución del programa.

o P. Declarativa Funcional
Está basado en el uso de funciones matemáticas, tienen un
conjunto de funciones predefinidas. Ejm. MathCAD,…

o P. Declarativa Lógica
Expresan lo que el programa debe lograr sin prescribir cómo
hacerlo, en términos de secuencias de acciones que deben
tomarse. Ejm DQL, HTML, XML,…
1.-Programación orientada a objetos con Python

Programación orientada a procedimientos


1.-Programación orientada a objetos con Python
Programación orientada a objetos
o La POO, intenta simular el mundo real a través del significado de objetos que contiene características y
funciones.
1.-Programación orientada a objetos con Python

¿Qué es un objeto?
o Es la instancia de una clase.

¿Qué es una Clase?


o Es una plantilla genérica de un objeto. La clase proporciona:
▪ variables iniciales de estado (donde se guardan los atributos)
▪ implementaciones de los comportamientos (métodos).

¿Qué son los métodos?


o Son acciones que realiza un objeto

¿Qué son los atributos de un objeto?


o Son las características de un objeto
1.-Programación orientada a objetos con Python
Ejemplo1: Crear una clase perro e instanciarlo

Ejemplo2: Crear una clase perro que se pueda ingresar varios nombres
1.-Programación orientada a objetos con Python

o self hace referencia al propio objeto perteneciente a la clase o hace referencia a la instancia de la clase.
o Explicación de self a través de la clase auto.
1.-Programación orientada a objetos con Python
o Ejemplo 3: Programar en python la clase “auto”
1.-Programación orientada a objetos con Python
Ejemplo 4: Implementar una clase llamada Alumno que tenga como atributos su nombre y su nota.
Definir los métodos para inicializar sus atributos, imprimirlos y mostrar un mensaje si está regular
(nota mayor o igual a 4). Definir dos objetos de la clase Alumno.
1.-Programación orientada a objetos con Python
Ejemplo 5: Desarrollar un programa que cargue los lados de un triángulo e implemente los siguientes métodos:
inicializar los atributos, imprimir el valor del lado mayor y otro método que muestre si es equilátero o no. El
nombre de la clase llamarla Triangulo.
1.-Programación orientada a objetos con Python

Método __init__ (constructor en Python)

o El método __init__, es el método constructor de la clase.


o Tiene en estado inicial todas las propiedades declaradas dentro del método __init__

o Los objetos que se crean pertenecientes a esta clase, van a tener un estado inicial.

o El método __init__ no puede retornar dato, puede recibir parámetros que se utilizan normalmente para
inicializar atributos, es un método opcional, de todos modos es muy común declararlo.
1.-Programación orientada a objetos con Python
Ejemplo 6: Programar una clase auto incluyendo el método __init__
1.-Programación orientada a objetos con Python

Ejemplo 7: Crear una clase animal usando el método __init__ o constructor.


1.-Programación orientada a objetos con Python

Ejemplo 8: En la clase animal anterior, colocar otros parámetros con valores por defecto.
1.-Programación orientada a objetos con Python

Encapsulamiento (Método o atributo privado)

o Python no distingue entre métodos o atributos públicos y privados, sino que todos los objetos dentro de una
clase o módulo pueden ser accedidos por fuera de ellos.

o No obstante, como convención se prefija doble guión bajo (__) para indicar que un objeto debería ser
interpretado por el programador como privado.

o La encapsulación significa evitar que no se modifique una propiedad desde fuera de la clase. Pero a nivel
interno se puede.
1.-Programación orientada a objetos con Python
Ejemplo 9:
Programar una clase auto, donde se pueda modificar una propiedad de la clase de forma externa.

No tiene sentido un auto con 2 ruedas


1.-Programación orientada a objetos con Python
Ejemplo 10:
Con respecto al ejemplo anterior usar el guión bajo (_) para encapsular o declararlo como atributo privado..
1.-Programación orientada a objetos con Python

Ejemplo11:
Programar una clase usuario que incluya un método privado usando doble guión bajo (__) que pueda ser
usado en la inicialización de un atributo.
1.-Programación orientada a objetos con Python
Ejemplo12:
Confeccionar una clase que represente un empleado. Definir como atributos su nombre y su sueldo.
En el método __init__ cargar los atributos por teclado y luego en otro método imprimir sus datos y por último uno
que imprima un mensaje si debe pagar impuestos (si el sueldo supera a 3000).
1.-Programación orientada a objetos con Python
Ejemplo13:
Desarrollar una clase que represente un punto en el plano y tenga los siguientes métodos: inicializar los
valores de x e y que llegan como parámetros, imprimir en que cuadrante se encuentra dicho punto (concepto
matemático, primer cuadrante si x e y son positivas, si x<0 e y>0 segundo cuadrante, etc.)
1.-Programación orientada a objetos con Python
Ejemplo14:
Desarrollar una clase que represente un Cuadrado y tenga los siguientes métodos: inicializar el valor del lado
llegando como parámetro al método __init__ (definir un atributo llamado lado), imprimir su perímetro y su
superficie.
1.-Programación orientada a objetos con Python
Ejemplo15:
Implementar la clase Operaciones. Se deben cargar dos valores enteros por teclado en el método __init__,
calcular su suma, resta, multiplicación y división, cada una en un método, imprimir dichos resultados.
1.-Programación orientada a objetos con Python

1.- Crear una clase llamada “SalidasGPIO”, donde se incluya tres métodos, de acuerdo a las siguientes
consideraciones:

o Considerar como atributos privados las líneas de configuración del GPIO.


o Programar tres métodos:

a) “Blynk”
b) “ShiftIzquierda”
c) “ShiftDerecha”

o Conectar tres pines BOARD (11,13 y 15) a tres LEDs.


o Los métodos deben incluir un argumento para indicar el número de repeticiones.
o El número de repeticiones debe ser ingresado por teclado.
o El tiempo de encendido y apagado y de desplazamiento es de 1 segundo
2.-Interfaces gráficas con Python

o Tkinter es gratuito y se incluye automáticamente con una instalación de Python en Linux, Microsoft Windows y Mac OS X.
Sin embargo, para usarlo en una aplicación, se debe importar el paquete tkinter.

o wxPython es un contenedor para la API de GUI multiplataforma (a menudo denominada "kit de herramientas")
wxWidgets (que está escrito en C ++) para el lenguaje de programación Python. Es una de las alternativas a Tkinter.

o PyQT, Probablemente sea la GUI más poderosa y sustancial para Python. PyQT es ideal para aplicaciones grandes y está
disponible bajo GPL y licencias comerciales. Puede resultar complicado de utilizar para aplicaciones comerciales.

o PySide es similar a PyQT en funcionalidad, pero PySide está cubierto por la licencia LGPL. Por lo tanto, está disponible
para su uso en aplicaciones comerciales.
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Tkinter
Es una librería o paquete estándar de Python para diseñar de forma rápida interfaces gráfica de usuario para
aplicaciones de escritorio.
Tk: Es la raíz de la Interfaz Gráfica de Usuario.
La clase Tk se instancia sin argumentos. Esto crea un widget de nivel superior de Tk que generalmente es la ventana
principal de una aplicación
Widgets: Los widgets en Python son objetos o los elementos que forman parte de la GUI. La librería Tk tiene 18 widgets:
Button, Canvas, Checkbutton, Entry, Frame, Label, LabelFrame, Listbox, Menu, MenuButton, Message, OptionMenu,
PanedWindow, Radiobutton, Scale, Scrollbar, Spinbox y Text.

Algunas definiciones.
Button: Los botones pueden contener texto o imágenes y se les puede asociar funciones o métodos, que al hacer clic
sobre ellos Tkinter se encargara de llamar automáticamente a ese método o función y ejecutara el código Python
contenido dentro de ellos.
Frame: Contenedor de otros widgets, tamaño propio y se puede colocar en cualquier posición de otro contenedor.
Label: Etiqueta donde se puede mostrar un texto estático
Entry: campo de texto sencillo.
Text: Campo de texto multilínea.
Radiobutton: botón radial que se usa en conjunto, para marcar una opción.
Checkbutton: botón cuadrado que se puede marcar con un tick.
Menu: estructura de botones centrados en la composición de menús superiores.
Listbox y Messages: Ventanas emergentes que permiten mostrar información al usuario
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Una ventana es un área visual rectangular, la cual contendrá todos nuestros iconos, botones, cuadros de entrada de
texto, entre otros. Existen dos tipos: las ventanas de aplicación, que inician y finalizan las aplicaciones gráficas, y las
ventanas de dialogo, que permiten la comunicación simple con el usuario, ambas formando la interfaz de usuario.

• Con la instrucción from tkinter import * le decimos a Python que emplearemos todo los componentes del módulo tkinter
• Creamos un objeto raíz del tipo Tk.
• El método mainloop el cual es el que mantiene visible la ventana raíz. Si se elimina esta línea la ventana no se
mantendrá visible
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Métodos y propiedades de una ventana

Los métodos y propiedades más usados en una


Ventana son:
raiz.title( ): Para escribir títulos
raiz.config( ): Para configurar una ventana
“anchoxlargo + posx + posy”
background=“blue”
raiz.resizable( ): Tener el tamaño fijo de la ventana
Por defecto resizable(1,1),Permite cambiar ancho y largo
Toplevel( ): Crea ventanas independientes de la
Ventana raíz, aunque no son procesos independientes
v1= Toplevel(v0 ):Crea una ventana hija.
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Existe el método llamado config, el cual nos permite configurar múltiples aspectos de la ventana, y otros elementos.
• Para cambiar el color de fondo le pasamos como parámetros las letras bg seguidas de un igual y dentro de comillas
dobles, el color en inglés o en formato hexadecimal. Las letras bg vienen de la palabra background.
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Vamos a agregar la el siguiente método a nuestro
código, a la instancia que llamamos raíz le
agregaremos el método resizable.

Si ejecutas el programa, veras que ahora no


podrás hacer la ventana más pequeña o más
grande.
En pocas palabras hemos prohibido esto para que
nuestro programa solo utilice la configuración de
tamaño que le hemos dicho dentro del código
Python.

El método resizable, recibe 2 argumentos del tipo


booleano numérico donde el primer argumento
pertenece al ancho y el segundo al largo.

Si quisiera que en la ventana de mi programa se


pueda manipular solo el ancho se usaría
raiz.resizable(1,0) y si quiero manipular sólo el
alto se usaría raiz.resizable(0,1).
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
1.1 Widget ventana principal o contenedor
Es un formulario de aplicación donde se incluye otros widgets, para realizar una tarea específica.
Se puede usar: import Tkinter para Python <v3 o import tkinter para Python >= v3

Ejemplo 1: Programar un archivo tkinter1.py, crear un objeto ventana y usar sus métodos de configuración tal como
se muestra en la figura.
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
1.2 Posicionamiento relativo
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
1.3 Widget Label o etiqueta: Muestra un mensaje (una cadena de texto) en un widget.

Ejemplo3: Programar un archivo tkinter3.py, Crear una ventana con color de fondo azul, tamaño, 300x300 y una etiqueta usando el método
pack para un posicionamiento relativo usando la librería Tkinter, tal como se muestra en la figura 3.

Figura 3
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Ejemplo 6.1
Crear una aplicación que incluye una ventana con un botón en la parte inferior. Al presionar el botón la aplicación termina su
ejecución. Usar la librería ttk para widgets nuevos 8.5.
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Ejemplo 6.2
• Crear una clase Python para definir el interfaz de usuario de la aplicación. Cuando se cree un objeto del tipo 'Aplicacion'
se ejecutará automáticamente el método __init__() qué construye y muestra la ventana con todos sus widgets.
• Define la función main() que es en realidad la que indica el comienzo del programa. Dentro de ella se crea el objeto
aplicación 'mi_app' basado en la clase 'Aplicación’
• Mediante el atributo __name__ tenemos acceso al nombre de un módulo. Python utiliza este atributo cuando se ejecuta
un programa para conocer si el módulo es ejecutado de forma independiente (en ese caso __name__ = '__main__') o es
importado:
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter

Ejemplo 7.2
Realizar una GUI que muestre dos botones usando comando grid para el posicionamiento de los dos botones
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Barra de desplazamiento (scrollbar)
El widget Scrollbar de Tkinter se usa normalmente para desplazar widgets como ListBox, Text o Canvas verticalmente, o
Entry horizontalmente. Muestra un deslizador en la posición correcta.
yscrollcommand es un widget desplazable que se controla con una barra de desplazamiento, y se usa para comunicarse con
barras de desplazamiento verticales.
Para añadir la barra de desplazamiento vertical a un cuadro de edición de texto se asigna la opción:
• yscrollcommand=scrollbar.set, se añade el comando set.
• scrollbar.config (command=listbox.yview), se añade el comando yview al listbox cuando se configura el scrollbar.
Ejemplo 7.4
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Radiobutton
Ejemplo 10.1: Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo botones de opción. El resultado se muestra en la
figura
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Radiobutton
Ejemplo 10.2: Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo botones de opción. El resultado se muestra en la
figura
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Checkbutton
o Este tipo de widget permite seleccionar una opción o varias opciones.
o El widget Checkbutton es usado para visualizar un número de opciones al usuario como botones del tipo Toggle.
o El Checkbutton o Checkbox tiene dos estados: On (1) y OFF (0)
o Cada Checkbutton tiene su respectiva variable.

Ejemplo 11
Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo casillas de verificación. El resultado se muestra en la figura 2.
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Ejemplo 12:
Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo casillas de verificación. El resultado se muestra en la figura
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
El Spinbox
Permite al usuario seleccionar valores de un conjunto determinado. Los valores pueden ser un rango de números o un conjunto
fijo de cadenas.

Ejemplo 13:
Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo Spinbox. El resultado se muestra en la figura
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Ejemplo 14:
Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo Spinbox. El resultado se muestra en la figura.
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Ejemplo 15:
Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo messagebox. El resultado se muestra en la
figura
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Ejemplo 16
Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo messagebox. El resultado se muestra en
la figura
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter
Ejemplo 17
Programar una aplicación o interfaz gráfica de usuario incluyendo widget del tipo messagebox. El resultado se muestra en la
figura
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
Ejemplo 18:
Realizar una GUI usando Tkinter de Python para encender/apagar un LED conectado al GPIO 17. Cada clic en el botón
[ON/OFF] debe encender y apagar al LED. El LED debe iniciar apagado. También debe de colocarse un botón EXIT para
salir de la aplicación limpiando puerto y GUI. Usar la librería FONT de tkinter para configurar tipo y tamaño de letra.
Además, el texto de la etiqueta del botón debe indicar [LED ON] (LED encendido) y [LED OFF] (LED apagado)
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
Usar la librería FONT de tkinter para configurar tipo y tamaño de letra. En este caso instanciamos al objeto
myFont.
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
Ejemplo 19:
Realizar una GUI usando Tkinter de Python para encender el encendido y apagado de 2 LEDs conectados a los pines
GPIO 17 y 18 (BCM). Con un clic deberá encender el LED (GPIO17) y con otro clic deberá apagar el mismo LED (GPIO17).
Imprimir “Turned ON” con color verde e imprimir “Turned OFF” con color rojo
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
Ejemplo 20
Programar una GUI usando Tkinter de Python para encender/apagar los LEDs GPIO 17,19,27 y recibir los cambios de estados
de tres botones conectados a los GPIO 16, 20 y 21.
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
Solución
Se usará las librerías ttk y sys.
Se considera tres etiquetas IN1, IN2 y IN3 y los botones LED1, LED2 y LED3
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
Solución
Se define la función check_inputs() que cambiará el color rojo (botón pulsado) o color blanco (botón sin pulsar). La retención
del color se mantendrá un tiempo debido al método after(50, check_inputs)
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
GPIO-Tkinter
Solución
Se define las funciones on_off1(), on_off2(), on_off3() y close() relacionados a los botones y cierre de la ventana principal.
Para el cambio de color del botón se usa el método .cget( ).
2.-Interfaz Gráfica de Usuario (GUI) – Tkinter
Ejemplo 21 GPIO-Tkinter
Programar una GUI usando Tkinter de Python para imprimir la hora en una ventana usando el texto de una etiqueta con color de fondo ‘indian
red’. Para ello usar el método (strftime) para imprimir la hora. También usar el método after (tiempo_ms, nombre_función) para refrescar la
función update_clock() cada segundo.
Para colocar el valor de colores puede ser en el formato ‘#RRGGBB’ en hexadecimal o con el nombre del color ‘red’. Para paleta de colores usar
los links: https://cafecito.app/programaciondesde0/post/tabla-de-colores-disponibles-en-tkinter-python-hNdzvBSqM
https://es.wikibooks.org/wiki/Python/Interfaz_gr%C3%A1fica_con_Tkinter/Los_nombres_de_los_colores
2.-Interfaz Gráfica de Usuario (GUI) - Tkinter

Ejercicios propuestos
o Programar una GUI donde una caja de texto reciba caracteres y un botón “SEND” para el envío de estos
caracteres por el puerto serial hacia un receptor Serial que puede ser un microcontrolador o una aplicación
serial.

o Programar una GUI donde se incluya que se muestre los valores de temperatura y humedad desde un sensor
DHT22 conectado a un microcontrolador de 8 bits. El envío de datos desde el microcontrolador hacia el
Raspberry Pi es por I2C.

También podría gustarte