Как выводить рандомное изображение из списка нужных?

Хочу сделать, чтобы по нажатию кнопки, в окне менялось изображение. Когда делал 3 разных изображения пришлось 3 раза писать функцию random.choice(CARDS), можно ли этого как то избежать?

from tkinter import *
import random

window = Tk()
window.title("Card Games")
window.geometry('800x500')

CARDS = (...)

randcard = random.choice(CARDS)

canvas = Canvas(window, width=800, height=500)
canvas.pack()

card1 = PhotoImage(file=randcard)
card1 = card1.subsample(3, 3)
our_label1 = Label(window)
our_label1.image = card1
our_label1['image'] = our_label1.image
our_label1.place(x=50, y=50)

window.mainloop()

Ответы (1 шт):

Автор решения: w4sQ

Функция get_random_img будет вам возвращать рандомную png картинку из текущей директории. Если вам нужны другие форматы изображения, то можете добавить formats = ['.png', '.jpg'] и поменять строчку на if Path(file).suffix in formats:.

import os
import random
from pathlib import Path


def get_random_img(data: list[str] | None = None) -> str:
    if data:
        return random.choice(data)
    return random.choice(_get_img_in_curdir())


def _get_img_in_curdir() -> list[str]:
    img = []
    for file in os.listdir():
        if Path(file).suffix == ".png":
            img.append(file)
    return img
→ Ссылка