为什么 Toplevel 显示 2 windows?
Why is Toplevel showing 2 windows?
我正在尝试制作一个 tkinter 应用程序,它不会在第一个 window(root)关闭时关闭所有内容(其他 windows)。我尝试使用 Toplevel()
,它非常适合其他程序中的弹出窗口 windows,但不适用于制作基本关卡。
from tkinter import *
top = Toplevel(bg='red')
top.mainloop()
我不知道这是否可行,或者我不知道我是否可以更改 Tk()
的属性以使其不会关闭所有其他 windows .
有两个 windows 被显示,因为当创建一个 tkinter 小部件时,它会强制创建一个 Tk
实例,并且每个小部件,除非显式传递父级,是自动创建的 Tk
实例的子实例。所以你的代码基本上模仿了下面的代码:
from tkinter import *
root = Tk()
top = Toplevel(root, bg='red')
root.mainloop()
现在有一些方法可以解决您想要的行为,一种是隐藏实际的 Tk
实例:
import tkinter as tk
root = tk.Tk()
root.withdraw()
top = tk.Toplevel(root, bg='red')
#to display root window again
#root.iconify()
#root.deiconify()
root.mainloop()
另一种方法是否决删除 root
本身,但我怀疑这是否真的是您想要的:
import tkinter as tk
def callback():
print("Won't close")
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", callback)
root.mainloop()
我正在尝试制作一个 tkinter 应用程序,它不会在第一个 window(root)关闭时关闭所有内容(其他 windows)。我尝试使用 Toplevel()
,它非常适合其他程序中的弹出窗口 windows,但不适用于制作基本关卡。
from tkinter import *
top = Toplevel(bg='red')
top.mainloop()
我不知道这是否可行,或者我不知道我是否可以更改 Tk()
的属性以使其不会关闭所有其他 windows .
有两个 windows 被显示,因为当创建一个 tkinter 小部件时,它会强制创建一个 Tk
实例,并且每个小部件,除非显式传递父级,是自动创建的 Tk
实例的子实例。所以你的代码基本上模仿了下面的代码:
from tkinter import *
root = Tk()
top = Toplevel(root, bg='red')
root.mainloop()
现在有一些方法可以解决您想要的行为,一种是隐藏实际的 Tk
实例:
import tkinter as tk
root = tk.Tk()
root.withdraw()
top = tk.Toplevel(root, bg='red')
#to display root window again
#root.iconify()
#root.deiconify()
root.mainloop()
另一种方法是否决删除 root
本身,但我怀疑这是否真的是您想要的:
import tkinter as tk
def callback():
print("Won't close")
root = tk.Tk()
root.protocol("WM_DELETE_WINDOW", callback)
root.mainloop()