Как выводить рандомное изображение из списка нужных?
Хочу сделать, чтобы по нажатию кнопки, в окне менялось изображение. Когда делал 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