Python Don';我不明白为什么会有';这是一个额外的窗口
所以,我有两个tkinter的东西,一个使用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
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()