如何限制顶级窗口Python Tkinter的数量
这是我的密码。 当我按下CTRL+S键时,它会弹出一个顶层窗口。但是,当我再次按CTRL+S时,它会弹出另一个窗口,以此类推 如何改进代码,以便在按CTRL+S时只弹出一个窗口如何限制顶级窗口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菜单(自我): 菜单=菜
从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()