Oop Tkinter Python上的顶级行为的顶级

Oop Tkinter Python上的顶级行为的顶级,oop,python,user-interface,tkinter,Oop,Python,User Interface,Tkinter,因此,我编写了这段简单的代码,以重新创建我希望实际应用程序的行为方式(对不起,如果我没有使用并且非常新): 将tkinter作为tk导入 从tkinter导入ttk def OpenSecondToplevel(): Top2=tk.Toplevel(根) Top2.几何图形(“250x200”) Top2.抓斗集() Top2.标题(“TopLevel 2”) Label=tk.Label(Top2,text=“这是Toplevel 2”) Label.pack() def OpenFirst

因此,我编写了这段简单的代码,以重新创建我希望实际应用程序的行为方式(对不起,如果我没有使用并且非常新):

将tkinter作为tk导入
从tkinter导入ttk
def OpenSecondToplevel():
Top2=tk.Toplevel(根)
Top2.几何图形(“250x200”)
Top2.抓斗集()
Top2.标题(“TopLevel 2”)
Label=tk.Label(Top2,text=“这是Toplevel 2”)
Label.pack()
def OpenFirstToplevel():
Top1=tk.Toplevel(根)
Top1.几何图形(“250x200”)
Top1.抓斗集()
Top1.标题(“TopLevel 1”)
Button2=tk.按钮(Top1,text=“打开Toplevel 2”,command=OpenSecondToplevel)
按钮2.pack()
root=tk.tk()
根标题(“主”)
根几何(“250x200”)
Frame1=tk.Frame(根)
Button1=tk.Button(Frame1,text=“Open Toplevel 1”,command=OpenFirstToplevel)
Frame1.pack()
按钮1.pack()
root.mainloop()
我录制了一段视频,解释了我的问题,因为我一直在关注
Toplevels
行为,似乎找不到解决方法。我希望视频是可以理解的对不起,糟糕的英语不是我的主要语言,如果你有任何问题可以问我,谢谢


对于您的情况,最简单的方法是在
OpenSecondToplevel()
中保存具有
grab\u set()
的当前窗口,等待第二个toplevel关闭,然后恢复保存窗口的
grab\u set()
状态:

def OpenSecondToplevel():
    win = root.grab_current() # save the current window which has grab_set()
                              # win is None is no window has grab_set()
    Top2=tk.Toplevel(root)
    Top2.geometry("250x200")
    Top2.grab_set()
    Top2.title("TopLevel 2")
    Label = tk.Label(Top2, text="This is Toplevel 2")
    Label.pack()
    if win:
        # wait until current toplevel is destroyed
        win.wait_window(Top2)
        # resume grab_set() for saved window
        win.grab_set()