如何限制顶级窗口Python Tkinter的数量

如何限制顶级窗口Python Tkinter的数量,python,tkinter,window,toplevel,Python,Tkinter,Window,Toplevel,这是我的密码。 当我按下CTRL+S键时,它会弹出一个顶层窗口。但是,当我再次按CTRL+S时,它会弹出另一个窗口,以此类推 如何改进代码,以便在按CTRL+S时只弹出一个窗口 从tkinter导入* 从tkinter导入消息框 类主窗口(框架): def uuu init uuu(self,master=None): 帧。\uuuu初始化(自,主) self.master=master self.master.title(“锦标赛软件”) self.menu() def菜单(自我): 菜单=菜

这是我的密码。 当我按下CTRL+S键时,它会弹出一个顶层窗口。但是,当我再次按CTRL+S时,它会弹出另一个窗口,以此类推

如何改进代码,以便在按CTRL+S时只弹出一个窗口

从tkinter导入*
从tkinter导入消息框
类主窗口(框架):
def uuu init uuu(self,master=None):
帧。\uuuu初始化(自,主)
self.master=master
self.master.title(“锦标赛软件”)
self.menu()
def菜单(自我):
菜单=菜单(self.master)
self.master.config(菜单=菜单)
参与者=菜单(菜单,tearoff=False)
participant.add_命令(label=“add participant”,accelerator=“Ctrl+S”,command=self.addparticipant_窗口)
menu.add_级联(label=“Participants”,menu=participant)
self.bind_all(“”,lambda e:menu.after(100,self.addparticipant_窗口))
def添加参与者_窗口(自身):
participantWindow=Toplevel()
参与者窗口几何(“400x350”)
参与者窗口。可调整大小(False,False)
顶部框架=框架(参与者窗口,背景为青色,宽度为450,高度为50,pady为3)
顶部框架网格(行=0,sticky=“ew”)
root=Tk()
root.iconbitmap(“Icon.ico”)
根几何(“500x400”)
根目录。可调整大小(False,False)
app=main窗口(根)
root.mainloop()
谢谢,我是新手,所以帮帮我。

来自tkinter import*
from tkinter import *
from tkinter import messagebox

class MainWindow(Frame):

    def __init__(self, master = None):
        Frame.__init__(self, master)

        self.master = master

        self.master.title("Tournament Software")

        self.menu()
        self.popup = None

    def open_up(self):
        if self.popup is None or not self.popup.top.winfo_exists():
            self.popup = addparticipant_window()
        else:
            self.popup.top.lift(self.master)

    def menu(self):

        menu = Menu(self.master)
        self.master.config(menu=menu)

        participant = Menu(menu, tearoff=False)
        participant.add_command(label="Add participant", accelerator="Ctrl+S", command=self.open_up)
        menu.add_cascade(label="Participants", menu=participant)

        self.bind_all('<Control-s>', lambda e: menu.after(100,self.open_up))

class addparticipant_window:

    def __init__(self):
        self.top = Toplevel()
        self.top.geometry("400x350")
        self.top.resizable(False, False)

        top_frame = Frame(self.top, bg='cyan', width=450, height=50, pady=3)
        top_frame.grid(row=0, sticky="ew")

root = Tk()
root.geometry("500x400")
root.resizable(False, False)


app = MainWindow(root)

root.mainloop()
从tkinter导入消息框 类主窗口(框架): def uuu init uuu(self,master=None): 帧。\uuuu初始化(自,主) self.master=master self.master.title(“锦标赛软件”) self.menu() self.popup=无 def打开(自): 如果self.popup为None或非self.popup.top.winfo_exists(): self.popup=addparticipant\u window() 其他: self.popup.top.lift(self.master) def菜单(自我): 菜单=菜单(self.master) self.master.config(菜单=菜单) 参与者=菜单(菜单,tearoff=False) 参与者.add\u命令(label=“add participant”,accelerator=“Ctrl+S”,command=self.open\u) menu.add_级联(label=“Participants”,menu=participant) self.bind_all(“”,lambda e:menu.after(100,self.open_up)) 类addparticipant\u窗口: 定义初始化(自): self.top=Toplevel() 自顶几何(“400x350”) self.top.reshable(False,False) 顶部框架=框架(self.top,bg='cyan',宽度=450,高度=50,pady=3) 顶部框架网格(行=0,sticky=“ew”) root=Tk() 根几何(“500x400”) 根目录。可调整大小(False,False) app=main窗口(根) root.mainloop()
从tkinter导入*
从tkinter导入消息框
类主窗口(框架):
def uuu init uuu(self,master=None):
帧。\uuuu初始化(自,主)
self.master=master
self.master.title(“锦标赛软件”)
self.menu()
self.popup=无
def打开(自):
如果self.popup为None或非self.popup.top.winfo_exists():
self.popup=addparticipant\u window()
其他:
self.popup.top.lift(self.master)
def菜单(自我):
菜单=菜单(self.master)
self.master.config(菜单=菜单)
参与者=菜单(菜单,tearoff=False)
参与者.add\u命令(label=“add participant”,accelerator=“Ctrl+S”,command=self.open\u)
menu.add_级联(label=“Participants”,menu=participant)
self.bind_all(“”,lambda e:menu.after(100,self.open_up))
类addparticipant\u窗口:
定义初始化(自):
self.top=Toplevel()
自顶几何(“400x350”)
self.top.reshable(False,False)
顶部框架=框架(self.top,bg='cyan',宽度=450,高度=50,pady=3)
顶部框架网格(行=0,sticky=“ew”)
root=Tk()
根几何(“500x400”)
根目录。可调整大小(False,False)
app=main窗口(根)
root.mainloop()

Hi JJ,虽然这可能回答了这个问题,但最好添加一些上下文和解释,说明你做了什么以及为什么要做。这有助于你所讨论的语言和想法的新手更容易理解这个概念。嗨,JJ,虽然这可能会回答这个问题,但最好添加一些上下文和解释,说明你做了什么以及为什么做。这有助于您所讨论的语言和想法的新手更容易理解这个概念。
from tkinter import *
from tkinter import messagebox

class MainWindow(Frame):

    def __init__(self, master = None):
        Frame.__init__(self, master)

        self.master = master

        self.master.title("Tournament Software")

        self.menu()
        self.popup = None

    def open_up(self):
        if self.popup is None or not self.popup.top.winfo_exists():
            self.popup = addparticipant_window()
        else:
            self.popup.top.lift(self.master)

    def menu(self):

        menu = Menu(self.master)
        self.master.config(menu=menu)

        participant = Menu(menu, tearoff=False)
        participant.add_command(label="Add participant", accelerator="Ctrl+S", command=self.open_up)
        menu.add_cascade(label="Participants", menu=participant)

        self.bind_all('<Control-s>', lambda e: menu.after(100,self.open_up))

class addparticipant_window:

    def __init__(self):
        self.top = Toplevel()
        self.top.geometry("400x350")
        self.top.resizable(False, False)

        top_frame = Frame(self.top, bg='cyan', width=450, height=50, pady=3)
        top_frame.grid(row=0, sticky="ew")

root = Tk()
root.geometry("500x400")
root.resizable(False, False)


app = MainWindow(root)

root.mainloop()