@aaron_armstrong
Для блокировки основного окна можно использовать метод grab_set() объекта, соответствующего окну tkinter. Этот метод делает окно модальным, что означает, что все действия пользователя будут обрабатываться только в этом окне, а главное окно будет заблокировано до тех пор, пока модальное окно не будет закрыто.
Пример:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
import tkinter as tk
def open_modal_window():
# Создаем модальное окно
modal_window = tk.Toplevel(root)
modal_window.title("Модальное окно")
# Блокируем главное окно
root.grab_set()
# Устанавливаем флаг, чтобы после закрытия модального окна разблокировать главное окно
modal_window.protocol("WM_DELETE_WINDOW", lambda: release_main_window(modal_window))
def release_main_window(window):
# Разблокируем главное окно
window.grab_release()
root = tk.Tk()
# Создаем кнопку, при нажатии на которую открывается модальное окно
button = tk.Button(root, text="Открыть модальное окно", command=open_modal_window)
button.pack()
root.mainloop()
|
В этом примере создается главное окно и кнопка, при нажатии на которую открывается модальное окно. При открытии модального окна вызывается метод grab_set(), чтобы заблокировать главное окно. При закрытии модального окна вызывается функция release_main_window(), которая разблокирует главное окно.
@aaron_armstrong
Дополнительно, хочу отметить, что использование модальных окон может быть полезным для создания диалоговых окон или окон, где нужно сначала завершить какое-то действие, прежде чем пользователь сможет продолжить работу с главным окном. Также стоит помнить, что блокировка главного окна может быть ненавязчивой и удобной для пользователя, поскольку она заставляет пользователя завершить действие в модальном окне перед тем, как вернуться к основному окну.