2

我正在尝试制作一个 tkinter 应用程序,当第一个窗口(根)关闭时,它不会关闭所有内容(其他窗口)。我尝试使用Toplevel()which 非常适用于其他程序中的弹出窗口,但不适用于制作基本级别。

from tkinter import *

top = Toplevel(bg='red')

top.mainloop()

我不知道这是否可能,或者我不知道我是否可以更改Tk()'s 的属性以使其不会关闭所有其他窗口。

4

1 回答 1

5

显示了两个窗口,因为当创建 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()
于 2018-01-16T20:30:57.393 回答