How do I make the program wait for an input using an Entry box in Python GUI?
Question: This is the code for the function I'm using to start the main part of the
program, however I want some sort of loop or something which creates ten
questions, but waits for an input from the Entry box before moving onto the
next question. Any ideas?

    
    
    def StartGame():
        root = Tk()
        root.title("Maths Quiz - Trigonometry and Pythagoras' Theorem | Start The Game")
        root.geometry("640x480")
        root.configure(background = "gray92")
        global AnswerEntry
        TotScore = 0
        Count = 0
        AnswerReply = None
        WorkingArea = Text(root, width = 70, height = 10, wrap = WORD).place(x = 38, y = 100)
        n = GetRandomNumber()
        Angle,Opposite,Adjacent,Hypotenuse = Triangle()
        Question,RealAnswer = QuestionLibrary(Opposite,Adjacent,Hypotenuse,Angle,n)
        AskQuestion = Label(root, text = Question, wraplength = 560).place(x = 48, y = 300)
        PauseButton = ttk.Button(root, text = "Pause").place(x = 380, y = 10)
        HelpButton = ttk.Button(root, text = "Help", command = helpbutton_click).place(x = 460, y = 10)
        QuitButton = ttk.Button(root, text = "Quit", command = root.destroy).place(x = 540, y = 10)
        AnswerEntry = Entry(root)
        AnswerEntry.place(x = 252, y = 375)
        SubmitButton = ttk.Button(root, text = "Submit", command = submit_answer).place(x = 276, y = 400)
        TotScore,AnswerReply = IsAnswerCorrect(Answer,RealAnswer)
        ScoreLabel = ttk.Label(root, text = TotScore).place(x = 38, y = 10)
        AnswerReplyLabel = ttk.Label(root, text = AnswerReply).place(x = 295, y = 440)
        root.mainloop()
    

I want the loop to start after the `AnswerReply = None`


Answer: You don't want a loop. The only really important loop inside a GUI should be
the `mainloop()`, handling **signal** and executing **callbacks**.

Example:

    
    
    try:
        import Tkinter as Tk
    except ImportError:
        import tkinter as Tk
    
    class QAGame(Tk.Tk):
        def __init__(self, questions, answers, *args, **kwargs):
            Tk.Tk.__init__(self, *args, **kwargs)
            self.title("Questions and answers game")
            self._setup_gui()
            self._questions = questions[:]
            self._answers = answers
            self._show_next_question()
    
        def _setup_gui(self):
            self._label_value = Tk.StringVar()
            self._label = Tk.Label(textvariable=self._label_value)
            self._label.pack()
            self._entry_value = Tk.StringVar()
            self._entry = Tk.Entry(textvariable=self._entry_value)
            self._entry.pack()
            self._button = Tk.Button(text="Next", command=self._move_next)
            self._button.pack()
    
        def _show_next_question(self):
            q = self._questions.pop(0)
            self._label_value.set(str(q))
    
        def _move_next(self):        
            self._read_answer()
            if len(self._questions) > 0:
                self._show_next_question()
                self._entry_value.set("")
            else:
                self.quit()
                self.destroy()
    
        def _read_answer(self):
            answer = self._entry_value.get()
            self._answers.append(answer)
    
        def _button_classification_callback(self, args, class_idx):
            self._classification_callback(args, self._classes[class_idx])
            self.classify_next_plot()
    
    if __name__ == "__main__":
        questions = ["How old are you?",
                 "What is your name?"]
        answers = []
        root = QAGame(questions, answers)
        root.mainloop()
        for q,a in zip(questions, answers):
            print "%s\n>>> %s" % (q, a)
    

We only have a Label, an Entry and a Button (I did not care about layout!,
just `pack()`).

Attached to the button is a command (aka callback). When the button is
pressed, the answer is read and the new question is assigned to the label.

Usage of this class is understandable from the example in the `if **name** ==
"**main** " block. Please note: the answers-list is filled in place, the
questions-list is kept unchanged.

