我的問題是,我正在嘗試在tkinter中進行一個數學測驗,要求輸入一個名稱,然後使用randint函數選擇一個問題。該人輸入一個答案,點擊提交,應用程序迴應是否正確或錯誤。Python tkinter,使用隨機生成的問題進行測驗,每次提交後重置
問題出現在我希望程序在提交後明確問題和答案,並提出新的問題3次以上(每次添加到最後顯示的分數)後,但是我似乎無法找到一種方法來輕鬆做到這一點;我目前一直在嘗試一段時間循環,但它不工作。
所以我的問題是我怎麼會讓代碼循環的部分3次每次都問不同的問題?
我的代碼迄今:
from tkinter import*;from random import randint
class Tk_app(Frame):
def __init__(self, root):
super(Tk_app, self).__init__(root);self.grid();self.createElements()
def nameElements(self):
self.NmLbl = Label(self, text="Name:").grid(row=0)
self.Name = Entry(self);self.Name.grid(row=0, column=1);self.score = int(0)
def createElements(self):
Frame.grid_forget(self)
self.QNum = randint(1, 2)
self.QEnt = Entry(self);self.QEnt.grid(row=1, column=1)
if(self.QNum == 1):
self.QLbl = Label(self, text="What is the air speed velocity of a flying swallow?").grid(row=1)
self.a = "African or European?"
elif(self.QNum == 2):
self.QLbl = Label(self, text="What is your quest?").grid(row=1)
self.a = "To find the holy grail."
else:
self.QLbl = Label(self, text="What is your favourite colour?").grid(row=1)
self.a = "Green"
def submit(self):
FinNam = self.Name.get()
Ans = self.QEnt.get()
if(Ans == self.a):
AnsLbl = Label(self, text = "Well done you got it right, "+FinNam).grid(row=2, column=1)
self.score+=1
else:
AnsLbl = Label(self, text = "Sorry not this time, "+FinNam+" The answer was " + self.a).grid(row=2, column=1)
self.SBut = Button(self, text="submit", command=lambda:submit(self)).grid(row=2)
root = Tk();root.title("Monty Questions")
app = Tk_app.nameElements(root)
fin = int(0)
while(fin<3):
fin+=1
app2 = Tk_app.createElements(root)
root.mainloop()
不定義一個變量和'.grid()'它在同一行上,因爲它會返回'Nonetype'。你必須把它放在下一行。 – W1ll1amvl 2014-11-04 00:13:48