Функция Tkinter askyesno() в Python с примерами
Функция Tkinter askyesno() в Python используется для отображения диалогового окна, запрашивающего подтверждение пользователя.
Что такое функция 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():
При нажатии кнопки «Выйти» отобразится диалоговое окно подтверждения:
Если нажать кнопку «да», приложение будет закрыто. В противном случае оно останется.
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()