2012-02-19 21 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()) 
関連する問題