2012-02-19 5 views
1

저는 python을 배우고 있고이 프로그램이 제대로 작동하는 데 문제가 있습니다.Tkinter 수학 퀴즈 만들기

from Tkinter import* 
import time 
import tkMessageBox 
import random 

def Questions():  
    number1 = random.randrange(1,25,1) 
    number2 = random.randrange(1,50,2) 
    answer = number1 + number2 
    prompt = ("Add " + str(number1) + " and " + str(number2)) 
    label1 = Label(root, text=prompt, width=len(prompt), bg='yellow') 
    label1.pack() 
    return answer 

def start(): 
    global count_flag 
    Questions() 
    count_flag = True 
    count = 0.0 
    while True: 
     if count_flag == False: 
      break 
     # put the count value into the label 
     label['text'] = str(count) 
     # wait for 0.1 seconds 
     time.sleep(0.1) 
     # needed with time.sleep() 
     root.update() 
     # increase count 
     count += 0.1 

def Submit(answer, entryWidget): 
    """ Display the Entry text value. """ 
    global count_flag 

    count_flag = False 
    print answer 

    if entryWidget.get().strip() == "": 
     tkMessageBox.showerror("Tkinter Entry Widget", "Please enter a number.") 

    if int(answer) != entryWidget.get().strip(): 
     tkMessageBox.showinfo("Answer", "INCORRECT!") 
    else: 
     tkMessageBox.showinfo("Answer", "CORRECT!") 

# create a Tkinter window 
root = Tk() 

root.title("Math Quiz") 
root["padx"] = 40 
root["pady"] = 20 

# Create a text frame to hold the text Label and the Entry widget 
textFrame = Frame(root) 

#Create a Label in textFrame 
entryLabel = Label(textFrame) 
entryLabel["text"] = "Answer:" 
entryLabel.pack(side=LEFT) 

# Create an Entry Widget in textFrame 
entryWidget = Entry(textFrame) 
entryWidget["width"] = 50 
entryWidget.pack(side=LEFT) 

textFrame.pack() 

#directions  
directions = ('Click start to begin. You will be asked a series of questions like the one below.') 
instructions = Label(root, text=directions, width=len(directions), bg='orange') 
instructions.pack() 

# this will be a global flag 
count_flag = True 

answer = Questions() 

Sub = lambda: Submit(answer, entryWidget) 

# create needed widgets 
label = Label(root, text='0.0') 
btn_submit = Button(root, text="Submit", command = Sub) 
btn_start = Button(root, text="Start", command = start) 
btn_submit.pack() 
btn_start.pack() 
label.pack() 


# start the event loop 
root.mainloop() 

"잘못된 것!" 텍스트 상자에 무엇을 입력했는지에 관계없이 제출할 때마다 모든 제안을 부탁드립니다. 덕분에, 스콧

답변

1

왼쪽 측면 정수, 오른쪽은 문자열입니다, 그래서 항상 거짓이다 :

int(answer) != entryWidget.get().strip() 

당신은 시도 할 수 있습니다 :

int(answer) != int(entryWidget.get().strip())