Главная страница » Как закрыть окно tkinter в python

Как закрыть окно tkinter в python

Есть несколько способов закрыть окно Tkinter в Python, в зависимости от того, что именно вы хотите сделать. Вот наиболее распространенные варианты:

1. Закрытие текущего окна (root или Toplevel):

    Root. destroy() (или Window. destroy()): Этот метод полностью уничтожает окно и все его дочерние виджеты (кнопки, лейблы и т. д.). Это самый надежный и “чистый” способ закрыть окно. root обычно используется для главного окна приложения, а window для дополнительных окон, созданных с помощью Toplevel().

· import tkinter as tk

·

· def close_window():

· root. destroy() # Закрыть главное окно

·

· root = tk. Tk()

· root. title("Пример закрытия окна")

·

· button = tk. Button(root, text="Закрыть окно", command=close_window)

· button. pack()

·

· root. mainloop()

    Root. quit() (или Window. quit()): Этот метод выходит из главного цикла событий Tkinter (mainloop), что обычно приводит к закрытию всех окон Tkinter. В некоторых случаях он может быть менее надежным, чем destroy(), особенно если у вас есть другие процессы, использующие Tkinter.

· import tkinter as tk

·

· def close_window():

· root. quit() # Выйти из главного цикла и закрыть окно

·

· root = tk. Tk()

· root. title("Пример закрытия окна")

·

· button = tk. Button(root, text="Закрыть окно", command=close_window)

· button. pack()

·

· root. mainloop()

2. Закрытие конкретного Toplevel окна (не главного):

Если вы создали несколько окон с помощью Toplevel(), вам нужно использовать destroy() на конкретном окне, которое вы хотите закрыть.

Import tkinter as tk

Def open_new_window():

global new_window # Объявляем new_window как глобальную переменную

new_window = tk. Toplevel(root)

new_window. title("Новое окно")

tk. Button(new_window, text="Закрыть это окно", command=close_new_window).pack()

Def close_new_window():

new_window. destroy() # Закрыть Новое Окно

Root = tk. Tk()

Root. title("Главное окно")

Tk. Button(root, text="Открыть новое окно", command=open_new_window).pack()

Root. mainloop()

3. Закрытие окна по нажатию на крестик (X) в заголовке окна:

Чтобы перехватить нажатие на кнопку закрытия окна (X) и выполнить свой код (например, спросить пользователя о подтверждении), вы можете использовать метод protocol("WM_DELETE_WINDOW", callback_function).

Import tkinter as tk

From tkinter import messagebox

Def on_closing():

if messagebox. askokcancel("Выход", "Вы уверены, что хотите выйти?"):

root. destroy()

Root = tk. Tk()

Root. title("Подтверждение закрытия окна")

Root. protocol("WM_DELETE_WINDOW", on_closing) # Перехватываем нажатие на крестик

Label = tk. Label(root, text="Нажмите на крестик, чтобы закрыть окно.")

Label. pack(padx=20, pady=20)

Root. mainloop()

Объяснение Protocol("WM_DELETE_WINDOW", callback_function):

    Root. protocol("WM_DELETE_WINDOW", on_closing): Эта строка сообщает Tkinter, что при нажатии на кнопку закрытия окна (X), вместо обычного закрытия окна, нужно вызвать функцию on_closing. WM_DELETE_WINDOW: Это имя протокола, который отвечает за событие закрытия окна. On_closing: Это имя функции, которая будет вызвана при нажатии на кнопку закрытия окна.

Ключевые моменты:

    Destroy() vs Quit(): Используйте destroy() для уничтожения конкретного окна и всех его дочерних виджетов. Используйте quit() для выхода из главного цикла Tkinter, что обычно приводит к закрытию всех окон, но может быть менее надежным в сложных приложениях. Toplevel() окна: Для закрытия дополнительных окон, созданных с помощью Toplevel(), используйте window. destroy(), где window – это переменная, содержащая ссылку на объект Toplevel. Перехват нажатия на крестик: Используйте root. protocol("WM_DELETE_WINDOW", callback_function) для перехвата события закрытия окна и выполнения своего кода (например, для подтверждения закрытия). Глобальные переменные: Если функция close_new_window вызывается после того, как окно new_window было создано в другой функции, нужно использовать global new_window внутри функции open_new_window, чтобы функция close_new_window могла получить доступ к переменной new_window.

Выбирайте способ закрытия окна, который лучше всего соответствует вашим потребностям. destroy() обычно является наиболее надежным и предпочтительным методом.

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх