2012-07-29 1 views
-1

는 기본적으로, 나는이 코드를 가지고 :파이썬에서 tkinter를 사용하면 임의 숫자는 한 번만 생성됩니까?

from tkinter import * 
from tkinter import messagebox 
import random 
import string 
from tkinter import filedialog 

ktwoWin = Tk() #window 
qLabel = StringVar() 
userAnswer = StringVar() 
ktwoWin.withdraw() #hide the ktwoWin window 
pass 

num1= random.randint(1, 12) #random numbers 
num2= random.randint(1, 12) 
Answer= num1 * num2 

def ktwoOpen(): 
    ktwoWin.deiconify() #show the ktwoWin window 

    ktwoWin.title("Kindergarten to Grade Two") 
    ktwoWin.geometry("400x300") 
    ktwoWin.grid() 

    askbutton= Button(ktwoWin, text="ask me a question!", command = askquestion, height=3, width=16, bg="blue") 
    askbutton.grid(column= 0, row= 0) 

    submitbtn= Button(ktwoWin, text="Submit Answer", command=checkanswer, height=3, width=12, bg= "red") 
    submitbtn.grid(column=1, row=0) 

    q=Label(ktwoWin,textvariable=qLabel) 
    q.grid(column=1, row=1) 
    q.config(text="text to go here") 
    qLabel.set("some text") 
    answerentry= Entry(ktwoWin, textvariable=userAnswer) 
    answerentry.grid(column=3, row=3) 
    pass 

def askquestion(): 
    qLabel.set("what is" +str(num1) + "x" + str(num2) + "?") 

def checkanswer(): 
    useranswer=userAnswer.get() 
    if int(useranswer) != Answer: 
     messagebox.showwarning(message="the answer is " + str(Answer)) 
    else: 
     messagebox.showinfo(message="correct!") 

ktwoWin.mainloop 

나는이 프로그램을 실행할 때 그 의미가 있다면 어떤이, 내가 가지고있는 임의의 숫자가 한 번만 randomise 것인가? 내 질문에 궁극적으로 코드의 임의의 부분을 반복 할 수있는 방법이 있습니까? 어떤 도움을 주셔서 감사합니다, thanks :)

답변

0

답변을받을 때마다 새로운 질문을 설정하는 것이 좋습니다. 저는 tkinter의 전문가는 아니므로, 이것은 꽤 일반적인 조언입니다.

먼저 모듈의 최상위 레벨이 아닌 askquestion 함수에서 두 개의 난수를 설정하십시오. 나중에 제품에 액세스 할 수 있어야하므로 global 키워드를 사용하여 함수의 범위 밖에서 대답을 사용할 수 있는지 확인하거나 코드를 클래스로 다시 구성하고 멤버 변수를 사용할 수 있습니다.

대답이 제공된 후에 프로그램 상태를 재설정 (예 : 이전 질문 라벨을 지우고 입력 상자에서 이전 답변을 삭제)하는 추가 논리를 checkanswer 함수 끝에 추가해야 할 수도 있습니다. 프로그램 재생 방법에 따라 즉시 새 질문을하거나 원래의 시작 상태로 돌아갈 수 있습니다.

+0

정말 감사합니다. – user1559284