2012-07-29 120 views
-1

基本上,我有这样的代码:在python中,使用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 

,当我运行该程序时,随机数我,只会随机化一次,如果是有道理的?我的问题最终是否有办法循环代码的随机数部分? 任何帮助表示赞赏,谢谢:)

回答

0

这应该是非常简单的每个人都回答时建立一个新的问题。我不是tkinter的专家,所以这是相当一般的建议。

首先,在askquestion函数中设置您的两个随机数,而不是在模块的顶层。由于您需要稍后才能访问产品,请使用关键字global以确保答案在函数范围之外(或者可以将代码重组为类并使用成员变量)。

您可能还需要在checkanswer函数末尾添加一些额外的逻辑,以在提供答案(例如,清除旧问题标签并从输入框中删除旧答案)后重置程序状态。根据你想要播放节目的方式,你可能会立即提出一个新的问题,或者你可能会回到原来的开始状态。

+0

感谢堆,工作真的很好:) – user1559284 2012-07-29 06:26:52