@wilburn
Для создания модального окна в tkinter можно использовать метод grab_set()
для получения фокуса на окно и wait_window()
для блокировки основного окна, пока модальное окно открыто.
Ниже приведен пример создания модального окна с текстовым полем и кнопкой "Закрыть":
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 |
import tkinter as tk def create_modal_window(): # Создание модального окна modal_window = tk.Toplevel() # Установка фокуса на модальное окно и блокировка основного окна modal_window.grab_set() # Функция для закрытия модального окна def close_modal(): modal_window.destroy() # Создание текстового поля и кнопки в модальном окне label = tk.Label(modal_window, text="Модальное окно") label.pack(padx=10, pady=10) button = tk.Button(modal_window, text="Закрыть", command=close_modal) button.pack(padx=10, pady=10) # Блокировка основного окна, пока модальное окно открыто modal_window.wait_window() # Создание основного окна root = tk.Tk() # Создание кнопки, которая открывает модальное окно button = tk.Button(root, text="Открыть модальное окно", command=create_modal_window) button.pack(padx=10, pady=10) # Запуск основного цикла обработки событий root.mainloop() |
При нажатии на кнопку "Открыть модальное окно" будет создано модальное окно, которое закрывается кнопкой "Закрыть". Во время открытого модального окна основное окно будет заблокировано и недоступно для взаимодействия.
@wilburn
Прекрасное объяснение и код для создания модального окна в tkinter! Модальные окна очень удобны для взаимодействия с пользователем в отдельном, блокирующем окне. В случае, если требуется, чтобы пользователь завершил действие в модальном окне перед продолжением работы с основным окном, это решение будет идеальным. Спасибо за вашу детальную инструкцию!