Функция Tkinter askyesno() в Python с примерами

Функция Tkinter askyesno() в Python используется для отображения диалогового окна, запрашивающего подтверждение пользователя.

Что такое функция Tkinter askyesno()?

Иногда вам бывает нужно запросить подтверждение пользователя. Например, если пользователи нажимают кнопку выхода, вы хотите спросить, действительно ли они хотят закрыть приложение. Или они просто случайно это делают:

Функция Tkinter askyesno() - пример

Чтобы отобразить диалоговое окно, запрашивающее подтверждение пользователя, используйте функцию askyesno().

Диалоговое окно будет иметь заголовок, сообщение и две кнопки (да и нет).

При нажатии кнопки «yes» функция возвращает значение True. Однако при нажатии кнопки «no» она возвращает значение False.

Ниже показан синтаксис функции askyesno():

answer = askyesno(title, message, **options)

Обратите внимание, что ответ представляет собой логическое значение: True или False.

В Tkinter также есть еще одна функция, называемая askquestion(), которая похожа на функцию askyesno(), за исключением того, что она возвращает строку со значением «yes» или «no»:

answer = askquestion(title, message, **options)

Пример функции tkinter askyesno()

Следующая программа иллюстрирует, как использовать функцию Tkinter askyesno():

Пример использования Tkinter askyesno()

При нажатии кнопки «Выйти» отобразится диалоговое окно подтверждения:

Отображение диалогового окна подтверждения

Если нажать кнопку «да», приложение будет закрыто. В противном случае оно останется.

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import askyesno

# create the root window
root = tk.Tk()
root.title('Tkinter Yes/No Dialog')
root.geometry('300x150')

# click event handler
def confirm():
    answer = askyesno(title='confirmation',
                    message='Are you sure that you want to quit?')
    if answer:
        root.destroy()


ttk.Button(
    root,
    text='Ask Yes/No',
    command=confirm).pack(expand=True)


# start the app
root.mainloop()

Ниже приведена та же программа, но использующая подход объектно-ориентированного программирования:

import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import askyesno, askquestion


class App(tk.Tk):
    def __init__(self):
        super().__init__()

        self.title('Tkinter Yes/No Dialog')
        self.geometry('300x150')

        # Quit button
        quit_button = ttk.Button(self, text='Quit', command=self.confirm)
        quit_button.pack(expand=True)

    def confirm(self):
        answer = askyesno(title='Confirmation',
                          message='Are you sure that you want to quit?')
        if answer:
            self.destroy()


if __name__ == "__main__":
    app = App()
    app.mainloop()
Похожие посты
Добавить комментарий

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