使用Python Tkinter,创建一个子面板(TopLevel)来显示某些内容并获取用户输入,在用户输入后,单击“退出”,发现整个GUI(主面板)也很混乱。 如何仅关闭顶层窗口?
let array = [
{id: 1},
{id: 2, parentId: 1},
{id: 3, parentId: 2},
{id: 4, parentId: 3},
{id: 5, parentId: 2},
{id: 6, parentId: 1},
...
{id: 100, parentId: 90}
]
答案 0 :(得分:1)
您唯一的错误是您除了呼叫top.quit()
外,还呼叫top.destroy()
。您只需要致电top.destroy()
。 top.quit()
将杀死mainloop
,导致程序退出。
答案 1 :(得分:1)
这似乎对我有用:
from tkinter import *
lay=[]
root = Tk()
root.geometry('300x400+100+50')
def create():
top = Toplevel()
lay.append(top)
top.title("Main Panel")
top.geometry('500x500+100+450')
msg = Message(top, text="Show on Sub-panel",width=100)
msg.pack()
def exit_btn():
top.destroy()
top.update()
btn = Button(top,text='EXIT',command=exit_btn)
btn.pack()
Button(root, text="Click me,Create a sub-panel", command=create).pack()
mainloop()
答案 2 :(得分:0)
您无法关闭根窗口。当您关闭根窗口时,它将关闭所有窗口。因为所有子窗口都连接到根窗口。
您可以隐藏根窗口。
隐藏方法名称为withdraw()
,您可以将show方法用于deiconify()
# Hide/Unvisible
root.withdraw()
# Show/Visible
root.deiconify()
答案 3 :(得分:0)
您可以在命令中使用lambda函数,该命令比正常工作要好
ex)
btn = Button(top,text ='EXIT',command = exit_btn )
将 exit_btn 更改为lambda :top.destroy()
答案 4 :(得分:0)
对于我来说,我从父类传递了一个回调函数,一旦单击了提交按钮,它将使回调函数传递返回值。
回调函数将在顶级对象上调用destroy方法,这样,您将关闭框架并获得返回值。