Код IT
← Каталог

Tkinter — окна и виджеты — 5.2. Модальное окно Toplevel

Фрагмент из «Tkinter — окна и виджеты»: 5.2. Модальное окно Toplevel.

Python main.py
import tkinter as tk

def open_settings():
    dialog = tk.Toplevel(root)       # дочернее окно, не второй tk.Tk()!
    dialog.title("Настройки")
    dialog.geometry("280x140")
    dialog.transient(root)           # всегда поверх главного
    dialog.grab_set()                # модальность — ввод только здесь

    tk.Label(dialog, text="Имя пользователя:").pack(anchor="w", padx=12, pady=(12, 0))
    entry = tk.Entry(dialog, width=30)
    entry.pack(padx=12, pady=4)
    entry.focus_set()

    def close():
        dialog.grab_release()
        dialog.destroy()

    tk.Button(dialog, text="OK", command=close).pack(pady=12)

root = tk.Tk()
root.title("Главное окно")
tk.Button(root, text="Настройки", command=open_settings).pack(expand=True, pady=40)
root.mainloop()
import tkinter as tk

def open_settings():
    dialog = tk.Toplevel(root)       # дочернее окно, не второй tk.Tk()!
    dialog.title("Настройки")
    dialog.geometry("280x140")
    dialog.transient(root)           # всегда поверх главного
    dialog.grab_set()                # модальность — ввод только здесь

    tk.Label(dialog, text="Имя пользователя:").pack(anchor="w", padx=12, pady=(12, 0))
    entry = tk.Entry(dialog, width=30)
    entry.pack(padx=12, pady=4)
    entry.focus_set()

    def close():
        dialog.grab_release()
        dialog.destroy()

    tk.Button(dialog, text="OK", command=close).pack(pady=12)

root = tk.Tk()
root.title("Главное окно")
tk.Button(root, text="Настройки", command=open_settings).pack(expand=True, pady=40)
root.mainloop()