擅长:python、mysql、java
<p>递归是由您的<code>App</code>类派生自<code>tk.TK</code>而不是{<cd3>}引起的。除此之外,<code>__init__()</code>方法用<code>self.root=tk.Tk()</code>语句创建它自己基类的第二个实例,而不是像应该那样调用基类的<code>__init__()</code>方法。在这种情况下,这尤其麻烦,因为<code>tk.TK</code>类的一个实例是Tk的<code>Toplevel</code>小部件,它包含Tcl解释器,并且通常只存在其中一个。在</p>
<p>这里有一些东西可以改变基类并完成我认为您正在尝试以适当的方式完成的事情。在这篇文章中,我纠正、修改和简化了其他一些事情,特别是使代码符合<a href="https://www.python.org/dev/peps/pep-0008/" rel="nofollow">PEP8 style guidelines</a>。在</p>
<pre><code>import Tkinter as tk
class App(tk.Frame):
def __init__(self, master=None):
tk.Frame.__init__(self, master)
self.pack()
self.var1 = tk.StringVar()
self.i = 0
tk.Label(self, textvariable=self.var1).pack()
def calculation(self):
# complex calculations that last 30 minutes in total
self.i += 1
self.var1.set(str(self.i))
# self.update() # no need, will be automatic as mainloop() runs
self.after(100, self.calculation)
app=App()
app.calculation() # start calculations
app.mainloop() # run gui
</code></pre>