В этом уроке вы узнаете, как использовать функцию Tkinter askretrycancel() для отображения диалогового окна подтверждения «Повторить/Отменить» в Python.
Знакомство с функцией Tkinter askretrycancel()
Иногда приложение выполняет задачу, но не может сделать этого из-за ошибки.
Например, вы можете захотеть подключиться к серверу базы данных. Однако сервер базы данных в данный момент недоступен. Он может быть отключен в течение короткого периода времени.
В этом случае вы можете отобразить диалоговое окно подтверждения, которое позволит пользователям повторно подключиться к базе данных или просто оставить приложение как есть.
Чтобы отобразить диалоговое окно «Повторить/Отмена», можно использовать функцию askretrycancel():
answer = askretrycancel(title, message, **options)
Функция askretrycancel() возвращает True, если нажата кнопка Retry. Если нажата кнопка Cancel, она возвращает False.
Пример с функцией askretrycancel() в Tkinter
Следующая программа показывает кнопку, имитирующую плохое соединение с базой данных:

Если нажать кнопку, появится диалоговое окно Retry/Cancel, сообщающее, что сервер базы данных недоступен. Также будет предложено переподключиться к серверу базы данных:

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

Программа:
import tkinter as tk
from tkinter import ttk
from tkinter.messagebox import askretrycancel, showinfo
# create the root window
root = tk.Tk()
root.title('Tkinter OK/Retry Dialog')
root.geometry('300x150')
# click event handler
def confirm():
answer = askretrycancel(
title="Connection Issue",
message="The database server is unreachable. Do you want to retry?"
)
if answer:
showinfo(
title="Information",
message="Attempt to connect to the database again.")
ttk.Button(
root,
text="Connect to the Database Server",
command=confirm).pack(expand=True)
# start the app
root.mainloop()
