Anteriormente Guizero 5.- Controlando la GUI.
En este capítulo vamos a utilizar Guizero para crear un juego. Como el programa que vamos a construir va a ser un poco "complejo" lo vamos a descomponer en varios pasos para crearlo.
El Juego de los Emojis.
Descomponiendo el programa en Tareas más Sencillas.
from guizero import App, Text, Box
app = App()
box = Box(app, layout="grid", width="fill", height="fill")
rojo = Text(box, bg="red", grid=[0,0])
azul = Text(box, bg="blue", grid=[0,1])
verde = Text(box, bg="green", grid=[1,0])
blanco = Text(box, bg="white", grid=[1,1])
app.display()from guizero import App, PushButton
app = App(layout="grid")
button1 = PushButton(app, text="1", grid=[0,0])
button2 = PushButton(app, text="2", grid=[1,0])
button3 = PushButton(app, text="3", grid=[2,0])
button4 = PushButton(app, text="4", grid=[0,1])
button5 = PushButton(app, text="5", grid=[1,1])
button6 = PushButton(app, text="6", grid=[2,1])
button7 = PushButton(app, text="7", grid=[0,2])
button8 = PushButton(app, text="8", grid=[1,2])
button9 = PushButton(app, text="9", grid=[2,2])
button0 = PushButton(app, text="0", grid=[1,3])
app.display()Aplicaciones del diseño en cuadricula.
from guizero import App, Box, Text, TextBox
app = App()
box_fname = Box(app, width="fill")
lbl_fname = Text(box_fname, text="Nombre", align="left", width=20)
txt_fname = TextBox(box_fname, align="left")
box_sname = Box(app, width="fill")
lbl_sname = Text(box_sname, text="Apellido", align="left", width=20)
txt_sname = TextBox(box_sname, align="left")
box_dob = Box(app, width="fill")
lbl_dob = Text(box_dob, text="Fecha de Nacimiento", align="left", width=20)
txt_dob = TextBox(box_dob, align="left")
app.display()from guizero import App, Text, TextBox
app = App(layout="grid")
lbl_fname = Text(app, text="Nombre", grid=[0,0])
txt_fname = TextBox(app, grid=[1,0])
lbl_sname = Text(app, text="Apellido", grid=[0,1])
txt_sname = TextBox(app, grid=[1,1])
lbl_dob = Text(app, text="Fecha de Nacimiento", grid=[0,2])
txt_dob = TextBox(app, grid=[1,2])
app.display()import os
from random import shuffle
# Establece la ruta a la carpeta del emoji en tu computadora.
emojis_dir = "emojis"
# Crea una lista de las ubicaciones de las imágenes de los emojis.
emojis = [os.path.join(emojis_dir, f) for f in os.listdir(
emojis_dir) if os.path.isfile(os.path.join(emojis_dir, f))]
# Baraja los emojis
shuffle(emojis)
print(emojis)import os
from random import shuffle
from guizero import App, Box, Picture
# Establece la ruta a la carpeta del emoji en tu computadora.
emojis_dir = "emojis"
# Crea una lista de las ubicaciones de las imagenes de los emojis.
emojis = [os.path.join(emojis_dir, f) for f in os.listdir(
emojis_dir) if os.path.isfile(os.path.join(emojis_dir, f))]
# Baraja los emojis
shuffle(emojis)
raiz = App("Juego de emojis")
# Crea una caja que será el contenedor de las cuadrículas
pictures_box = Box(raiz, layout="grid")
# Crea una lista vacía a la cual se añadirán las imágenes de los emojis.
imagenes = []
for x in range(0, 3):
for y in range(0, 3):
# Pone las imágenes en la lista.
imagen = Picture(pictures_box, grid=[x, y])
imagenes.append(imagen)
# Por cada una de las imagenes en la lista.
for imagen in imagenes:
# hace que la imagen sea un emoji aleatorio.
imagen.image = emojis.pop()
raiz.display()test = [1,2,3,4,5]
print(test.pop())
# Imprime la lista "test" después de haber eliminado el último elemento.
print("La nueva lista después de haber usado pop() : ", test, "\n")- Intenta adaptar el código para que se muestre una cuadrícula de 4 x 4 en la que se visualicen 16 emojis.
- Intenta volver a escribir las dos últimas líneas del código que asigna las imágenes a cada widget sin utilizar el método .pop(). Compara ambos códigos el original con .pop() y el que hayas escrito. ¿Es más largo o más complicado?
from guizero import PushButton
buttons_box = Box(game_box, layout="grid")
boton = PushButton(buttons_box, grid=[x,y])
botones.append(button)
for boton in botones:
boton.image = emojis.pop()import os
from random import shuffle
from guizero import App, Box, Picture, PushButton
# Establece la ruta a la carpeta del emoji en tu computadora.
emojis_dir = "emojis"
# Crea una lista de las ubicaciones de las imagenes de los emojis.
emojis = [os.path.join(emojis_dir, f) for f in os.listdir(
emojis_dir) if os.path.isfile(os.path.join(emojis_dir, f))]
# Baraja los emojis
shuffle(emojis)
raiz = App("Juego de emojis")
# Crea una caja que será el contenedor de las cuadrículas
pictures_box = Box(raiz, layout="grid")
# Crea una caja que será el contendor de los botones
buttons_box = Box(raiz, layout="grid")
# Crea una lista vacia a la cual se añadirán las imagenes de los emojis.
# Primero crearemos los objetos, los métemos en la lista y luego le añadimos
# las imagenes.
imagenes = []
botones = []
for x in range(0, 3):
for y in range(0, 3):
# Pone las imagenes en la lista.
imagen = Picture(pictures_box, grid=[x, y])
imagenes.append(imagen)
# Pone los botones en la lista.
boton = PushButton(buttons_box, grid=[x,y])
botones.append(boton)
# Por cada una de las imagenes en la lista.
for imagen in imagenes:
# hace que la imagen sea un emoji aleatorio.
imagen.image = emojis.pop()
for boton in botones:
# hace que la imagen dentro del botón sea un emoji aleatorio.
boton.image = emojis.pop()
raiz.display()# importa la función randint
from random import randint
# escoge un nuevo emoji
emoji_coincidente = emojis.pop()
# selecciona un número al azar
imagen_aleatoria = randint(0,8)
# Cambia una de las imagenes de forma aleatoria por el emoji seleccionado.
imagenes[imagen_aleatoria].image = emoji_coincidente
boton_aleatorio = randint(0,8)
# Cambia uno de los botones de forma aleatoria por el mismo emoji que seleccionamos anteriormente.
botones[boton_aleatorio].image = emoji_coincidentefrom time import sleep
def cuenta_atras(t):
while t > 0:
print(t)
t -= 1
sleep(1)
cuenta_atras(10)from guizero import App, Text
from time import sleep
def cuenta_atras(t):
while t > 0:
text.value = int(text.value) - 1
sleep(1)
app = App()
text = Text(app, text=10)
cuenta_atras(10)
app.display()app.display()from guizero import App, Text
def aumentar():
text.text_size = int(text.text_size) + 1
app = App("textsize")
text = Text(app, text="bigger")
text.repeat(500, aumentar)# Añadir en las caracteristicas_adicionales
caracteristicas_adicionales = Box(app)
temporizador = Text(caracteristicas_adicionales, text="Preparado.")# inicia el temporizador
temporizador.value = 30
temporizador.repeat(1000, contador)def contador():
temporizador.value = int(temporizador.value) - 1
if int(temporizador.value) == 0:
# resetea el temporizador
temporizador.value = 30from guizero import warn
def contador():
temporizador.value = int(temporizador.value) - 1
if int(temporizador.value) == 0:
temporizador.cancel(contador)
# resetea el temporizador
resultado.value = "JUEGO TERMINADO"
warn("GAME OVER", "El tiempo se ha agotado")
temporizador.value = 30
# resetea el resultado
resultado.value = ""
# Comienza una nueva ronda
iniciar_ronda()
#resetea el contador
temporizador.repeat(1000, contador)
from guizero import Box, Text
marcador = Box(raiz)
etiqueta = Text(marcador, text="Puntuación", align="left")
puntuacion = Text(marcador, text="0", align="left")
app.display()# Inicia la aplicaciónraiz = App("Juego de emojis", height=550)
def coincide_emoji(coincide):
if coincide:
resultado.value = "Correcto"
puntuacion.value = int(puntuacion.value) + 1
else:
resultado.value = "Falso"
iniciar_ronda()puntuacion.value = "0"

