基本上,我有这段代码:
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 :(得分:0)
每次回答问题时,设置一个新问题应该非常简单。我不是tkinter的专家,所以这是一个相当普遍的建议。
首先,在askquestion
函数中设置两个随机数,而不是在模块的顶层。由于您需要以后能够访问该产品,请使用global
关键字确保答案在函数范围之外可用(或者您可以将代码重组为类并使用成员变量)。
您可能还需要在checkanswer
函数的末尾添加一些额外的逻辑,以便在提供答案后重置程序的状态(例如,清除旧问题标签并从输入框中删除旧答案) )。根据您希望程序播放的方式,您可能会立即提出新问题,或者您可能会回到原始状态。