from guizero import App, Box, Picture, PushButton import os from random import randint from random import shuffle # set the path to the emoji folder on your computer emojis_dir = "emojis" # create a list of the locations of the emoji images emojis = [os.path.join(emojis_dir, f) for f in os.listdir(emojis_dir) if os.path.isfile(os.path.join(emojis_dir, f))] # shuffle the emojis shuffle(emojis) app = App("Emoji Match Game") game_box = Box(app, border=True) pictures_box = Box(game_box, layout="grid", border=True) buttons_box = Box(game_box, layout="grid", border=True) # create a empty lists to which pictures and buttons will be added # we use the property visible to distinguish between set and not # set image properties # visible False: image not yet set pictures = [] buttons = [] for x in range(0, 3): for y in range(0, 3): # put the pictures into the list picture = Picture(pictures_box, grid=[x,y]) picture.visible = False pictures.append(picture) # put the buttons into the list button = PushButton(buttons_box, grid=[x, y]) button.visible = False buttons.append(button) # select the matching emoji matched_emoji = emojis.pop() # select a random picture index for this emoji idx_picture = randint(0,8) # select a random button index for this emoji idx_button = randint(0,8) # set the chosen picture's image to the matched_emoji pictures[idx_picture].image = matched_emoji pictures[idx_picture].visible = True # set the chosen button's image to the matched_emoji buttons[idx_button].image = matched_emoji buttons[idx_button].visible = True # set all image properties to an emoji # if the related visible property is False for idx in range(0, len(pictures)): if not pictures[idx].visible: pictures[idx].image = emojis.pop() pictures[idx].visible = True if not buttons[idx].visible: buttons[idx].image = emojis.pop() buttons[idx].visible = True # now all image properties are set and we can display the GUI app.display()