Python Don';我不明白为什么会有';这是一个额外的窗口

Python Don';我不明白为什么会有';这是一个额外的窗口,python,oop,tkinter,Python,Oop,Tkinter,所以,我有两个tkinter的东西,一个使用class,另一个没有class。一切都应该是一样的,但是当我使用“类”时,它会创建两个窗口,一个是我实际创建的窗口,另一个是我不知道它来自何处的窗口(可能是因为我同时使用了框架和tk.tk,但是没有类它就不能工作) 上面是没有课的。 下面的一个是有类的 try: import tkinter as tk except ImportError: #2.x import Tkinter as tk class typt

所以,我有两个tkinter的东西,一个使用
class
,另一个没有class。一切都应该是一样的,但是当我使用“类”时,它会创建两个窗口,一个是我实际创建的窗口,另一个是我不知道它来自何处的窗口(可能是因为我同时使用了
框架和
tk.tk
,但是没有类它就不能工作)

上面是没有课的。 下面的一个是有类的

try:
        import tkinter as tk
except ImportError: #2.x
        import Tkinter as tk


class typtolator(tk.Tk):
        def __init__(self, *args, **kwargs):
                tk.Tk.__init__(self, *args, **kwargs)
                window = tk.Tk()
                framer = tk.Frame(window)
                window.title("Typtolator")
                window.geometry("720x480+360+240")



app = typtolator()
app.mainloop()

因为创建了两个窗口,所以得到了两个窗口

第一个窗口是
app
,是
typtolator
的一个实例。这个类是
tk.tk
的子类,因此是
tk.tk

第二个窗口是
window
,它是创建
app
时创建的
tk.tk
的实例


解决方案是一个或另一个:子类
tk.tk
,或者不创建子类,然后显式创建
tk.tk

,正如@Bryan Oakley在他的回答中指出的那样,问题是您的类是一个
tk.tk
,因为它是从一个派生出来的,因此,这个额外的窗口是因为它在其
\uuu init\uuu()
方法中创建了第二个纯
tk.tk
实例

他遗漏了一个正确操作的例子,我认为这可能很重要,如下所示:

try:
    import tkinter as tk
except ImportError: #2.x
    import Tkinter as tk


class Typtolator(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)  # Call superclass' __init__().
        framer = tk.Frame(self)
        self.title("Typtolator")
        self.geometry("720x480+360+240")


app = Typtolator()
app.mainloop()
try:
    import tkinter as tk
except ImportError: #2.x
    import Tkinter as tk


class Typtolator(tk.Tk):
    def __init__(self, *args, **kwargs):
        tk.Tk.__init__(self, *args, **kwargs)  # Call superclass' __init__().
        framer = tk.Frame(self)
        self.title("Typtolator")
        self.geometry("720x480+360+240")


app = Typtolator()
app.mainloop()