首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Tkinter上Toplevel行为的Toplevel

Tkinter上Toplevel行为的Toplevel
EN

Stack Overflow用户
提问于 2020-03-09 00:09:49
回答 1查看 65关注 0票数 2

因此,我编写了这个简单的代码来重新创建我希望我的实际应用程序的行为方式(抱歉,如果我不使用oop,并且真的是全新的):

代码语言:javascript
运行
复制
import tkinter as tk
from tkinter import ttk

def OpenSecondToplevel():
  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()

def OpenFirstToplevel():
  Top1=tk.Toplevel(root)
  Top1.geometry("250x200")
  Top1.grab_set()
  Top1.title("TopLevel 1")
  Button2 = tk.Button(Top1, text="Open Toplevel 2", command=OpenSecondToplevel)
  Button2.pack()

root = tk.Tk()
root.title("Main")
root.geometry("250x200")
Frame1 = tk.Frame(root)
Button1 = tk.Button(Frame1, text="Open Toplevel 1", command=OpenFirstToplevel)

Frame1.pack()
Button1.pack()

root.mainloop()

我录制了一段视频,解释了我的问题,因为我一直在寻找很多关于Toplevels行为的信息,而且我似乎找不到解决它的方法。我希望这段视频是可以理解的,很抱歉英语不好不是我的主要语言,如果你有什么问题可以问我,谢谢!

https://www.youtube.com/watch?v=Ks2zRU0fOJM

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-03-09 02:24:58

对于您的情况,简单的方法是在grab_set()中保存当前OpenSecondToplevel()窗口,等待第二层关闭,然后恢复保存窗口的grab_set()状态:

代码语言:javascript
运行
复制
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()
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60593281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档