在python中,使用tkinter,我的随机数只生成一次?

时间:2012-07-29 05:39:31

标签: 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

当我运行程序时,我拥有的随机数只会随机一次,如果这有意义的话?我的问题,最终,有没有办法循环代码的随机数部分? 任何帮助表示赞赏,谢谢:)

1 个答案:

答案 0 :(得分:0)

每次回答问题时,设置一个新问题应该非常简单。我不是tkinter的专家,所以这是一个相当普遍的建议。

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

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