<p>你不需要循环。GUI中唯一真正重要的循环应该是<code>mainloop()</code>,它处理<strong>信号</strong>并执行<strong>回调</strong>。在</p>
<p>示例:</p>
<pre><code>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)
</code></pre>
<p>我们只有一个标签,一个条目和一个按钮(我不在乎布局!,只要<code>pack()</code>)。在</p>
<p>附加在按钮上的是一个命令(又名回调)。按下按钮后,将读取答案,并将新问题分配给标签。在</p>
<p>从“if<strong>名称</strong>=”<strong>main</strong>“块中的示例可以理解此类的用法。请注意:答案列表已填写到位,问题列表保持不变。在</p>