📅  最后修改于: 2023-12-03 15:38:58.335000             🧑  作者: Mango
在使用 Python 的 tkinter 模块创建应用程序时,可能需要防止用户在程序运行过程中打开多个窗口。本文将介绍如何使用 tkinter 实现此功能。
使用 Tkinter 的 Toplevel
类创建子窗口,并将它们绑定到主窗口上。如果用户尝试打开新的子窗口,则会检查是否已经存在打开的子窗口。如果已经存在,则会激活该子窗口,否则将创建一个新的子窗口。
请参考下面的代码片段:
import tkinter as tk
class Application(tk.Frame):
def __init__(self, master=None):
super().__init__(master)
self.master = master
self.master.protocol("WM_DELETE_WINDOW", self._on_close)
self.windows = []
self.pack()
def new_window(self):
for window in self.windows:
if window.winfo_exists():
window.lift()
return
window = tk.Toplevel(self.master)
window.protocol("WM_DELETE_WINDOW", self._on_close)
self.windows.append(window)
def _on_close(self):
self.windows = [window for window in self.windows if window.winfo_exists()]
if not self.windows:
self.master.destroy()
if __name__ == "__main__":
root = tk.Tk()
app = Application(master=root)
app.mainloop()
此代码创建了一个带有一个“新建窗口”按钮的主窗口。点击按钮将打开一个新的子窗口。如果已经存在一个子窗口,则将激活该子窗口,否则将创建一个新的子窗口。当所有子窗口都关闭时,主窗口也将关闭。
本文介绍了如何使用 tkinter 防止用户在程序运行时打开多个窗口。通过检查是否已经存在打开的子窗口来实现此功能,可以确保应用程序的稳定性和可靠性。