필자는 선생님으로 google을 사용하면서 파이썬을 배우고 있다는 것을 인정해야합니다. 어떤 도움을 주셔서 감사 드리며 모두가 제공 할 수 있다고 조언드립니다!Python 3에서 여러 이미지의 출력 위치를 랜덤 화하는 방법
나는 사운드를 재생 한 다음 사용자에게 선택할 수있는 4 가지 이미지 옵션을 제공하는 프로그램을 작성 중입니다. 내가 직면 한 문제는 네 이미지의 위치를 무작위로 추출한 것입니다. 필자는 4 가지 표준 텍스트 옵션의 순서를 무작위로 추출한 다음 올바른 이미지를 표시하고 4 개의 임의 이미지를 표시하는 프로그램을 작성했지만 올바른 이미지는 항상 4 번째 이미지 인 프로그램을 작성했습니다. 매번 임의의 기능이나 임의의 셔플 기능을 사용하여 매번 표시된 이미지의 순서를 재 배열 할 수 있습니까?
같은 위치에 이미지를 표시하는 프로그램의 코드는 아래와 같습니다. 참고로, 다음 단계는 오른쪽 버튼을 눌렀을 때 프로그램이 인식하도록하는 것입니다. 바로 지금은 같은 이미지를 다시 표시하지만, 이번에는 내 질문이 아닙니다. 도와 주셔서 감사합니다!
import os, random
from random import choice
import winsound
import time
from tkinter import *
master=Tk()
Imagepath = "C:\\LearnArabic\\alphabet\\Image\\"
Soundpath = "C:\\LearnArabic\\alphabet\\Sound\\"
Letter = random.choice(os.listdir(Soundpath))
answer1 = PhotoImage(file=Imagepath+((random.choice(os.listdir(Imagepath)).rsplit(".", 1)[0])+ ".png"))
answer2 = PhotoImage(file=Imagepath+((random.choice(os.listdir(Imagepath)).rsplit(".", 1)[0])+ ".png"))
answer3 = PhotoImage(file=Imagepath+((random.choice(os.listdir(Imagepath)).rsplit(".", 1)[0])+ ".png"))
correctanswer = PhotoImage(file=(Imagepath+((Letter.rsplit(".", 1)[0])+ ".png")))
winsound.PlaySound((Soundpath)+ (Letter), winsound.SND_FILENAME)
def button1():
label = Label(master, image=answer1, anchor = S)
label.image = answer1
label.place(x=50, y=100)
def button2():
label = Label(master, image=answer2, anchor = S)
label.image = answer2
label.place(x=100, y=100)
def button3():
label = Label(master, image=answer3, anchor = S)
label.image = answer3
label.place(x=50, y=150)
def button4():
label = Label(master, image=correctanswer, anchor = S)
label.image = correctanswer
label.place(x=100, y=150)
button1 = Button(master, image=answer1, command= button1)
button1.grid(row =2, column=2)
button2 = Button(master, image=answer2, command= button2)
button2.grid(row =3, column=2)
button3 = Button(master, image=answer3, command= button3)
button3.grid(row =2, column=3)
button4 = Button(master, image=correctanswer, command= button4)
button4.grid(row =3, column=3)