擅长:python、mysql、java
<p>问题是,在显示对话框之前,您的测试例程已经输出了<code>var</code>的值,更不用说输入文本了。(通过向测试代码中添加一些<code>print</code>语句,可以很容易地验证这一点。)这是因为对<code>mainloop()</code>的调用在最后。相反,您应该在创建帧之后调用<code>mainloop</code><em>,但在读取并返回输入之前调用^{<em>,例如,它可能转到<code>getText</code>方法:</p>
<pre><code>def getText(requestMessage,parent):
a = takeInput(requestMessage,parent)
parent.mainloop()
return a.getString()
</code></pre>
<p>这仍然不能很好地工作,因为您必须关闭对话框(单击<code>[x]</code>按钮),即使在单击“确定”之后,我也不确定如何解决这个问题。</p>
<p>但是,请注意,已经有<em>这个模块,<code>tkSimpleDialog</code>,它提供了像<code>askstring(title, prompt)</code>这样的方法来显示这样的输入对话框。因此,您可以使用它们,或者查看源代码(可以在<code>/usr/lib/python2.7/lib-tk</code>或类似代码中找到)来了解它是如何完成的。</p>