-1

基本上,我有这个代码:

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

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

4

1 回答 1

0

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

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

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

于 2012-07-29T06:05:23.497 回答