擅长:python、mysql、java
<blockquote>
<p>I am not (yet) a OOP programmer so please avoid that paradigm if possible...</p>
</blockquote>
<p>如果你想成功地用Python编程,迟早你必须了解面向对象编程。另一种方法(全局变量和函数无处不在)肯定不是一种好方法。即使是Tkinter也有很多类,它们都有各自的方法,所以看起来这对于您的目的是必要的。在</p>
<p>回到您的问题,一个解决方案可以是将顶层窗口设置为一个类的属性,在该类中封装所有应用程序,并且只有在该属性为None时才打开一个新窗口。要在关闭窗口时将此属性设置为None,可以使用<a href="http://effbot.org/tkinterbook/wm.htm#Tkinter.Wm.protocol-method">^{<cd1>}</a>方法设置回调。在</p>
<p>这是一个小的工作示例,您可以看到它是如何工作的:</p>
<pre><code>import Tkinter as tk
class App(tk.Tk):
def __init__(self):
tk.Tk.__init__(self)
self.button = tk.Button(self, text="Open a new window", command=self.openwindow)
self.button.pack()
self.toplevel = None
def openwindow(self):
if self.toplevel is None:
self.toplevel = tk.Toplevel(self)
self.toplevel.protocol('WM_DELETE_WINDOW', self.removewindow)
def removewindow(self):
self.toplevel.destroy()
self.toplevel = None
app = App()
app.mainloop()
</code></pre>