2017-10-01 1 views
0

필자는 선생님으로 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) 

답변

0

아무도 해결책을 찾지 못했지만 나는 내 자신의 질문에 대답 할 수 있었다고 생각합니다. 나는 버튼 목록을 작성한 다음 셔플을 사용하여 목록을 재구성했다. 거기에서, 단순히 ".grid"를 사용하여 새로운, 지금 무작위로 나열된 순서를 표시합니다. 업데이트 된 코드는 다음과 같습니다.

def button1(): 
    label = Label(master, image=correctanswer, anchor = S) 
    label.image = answer1 
    label.grid(row=2, column=1) 
    print ("You wrong fool") 

def button2(): 
    label = Label(master, image=correctanswer, anchor = S) 
    label.image = answer2 
    label.grid(row =2, column=1) 
    print ("Try again...") 

def button3(): 
    label = Label(master, image=correctanswer, anchor = S) 
    label.image = answer3 
    label.grid(row =2, column=1) 
    print ("Are you sure this is for you?") 

def button4(): 
    label = Label(master, image=correctanswer, anchor = S) 
    label.image = correctanswer 
    label.grid(row =3, column=3) 
    print ("That's right!") 
    print ("The letter is", (Letter.rsplit(".", 1)[0])) 
    winsound.PlaySound((Soundpath)+ (Letter), winsound.SND_FILENAME) 
    input("Press ENTER to Continue") 

    master.destroy() 

button1 = Button(master, image=answer1, command= button1) 

button2 = Button(master, image=answer2, command= button2) 

button3 = Button(master, image=answer3, command= button3) 

button4 = Button(master, image=correctanswer, command= button4) 

questions = [button1, button2, button3, button4] 
random.shuffle(questions) 

questions[0].grid(row=0, column=1) 
questions[1].grid(row=1, column=1) 
questions[2].grid(row=0, column=2) 
questions[3].grid(row=1, column=2) 

또한 "def 버튼 ..."섹션에서 내 코드를 약간 수정했습니다.

관련 문제