tkinterに用意されているメッセージボックスを使ってみます。
はじめに、messageboxをインポートします。
from tkinter import messagebox
メッセージボックスは7つのタイプが用意されています。
使い方は、
messagebox.func(title, message)
- func - 関数
- title - ボックスのタイトル
- message - ボックスに表しされるメッセージ
showinfo
res = messagebox.showinfo("title", "message")
print("showinfo", res)

showwarning
res = messagebox.showwarning("title", "message")
print("showwarning", res)

showerror
res = messagebox.showerror("title", "message")
print("showerror", res)

askquestion
resには、はいを押せばyes、いいえを押せばnoが入ります。
res = messagebox.askquestion("title", "message")
print("askquestion", res)

askokcancel
resには、OKを押せばTrueがキャンセルを押せばFalseが入ります。
res = messagebox.askokcancel("title", "message")
print("askokcancel", res)

askyesno
resには、はいを押せばTrue、いいえを押せばFalseが入ります。
res = messagebox.askyesno("title", "message")
print("askyesno", res)

askretrycancel
resには、再試行を押せばTrue、キャンセルを押せばFalseが入ります。
res = messagebox.askretrycancel("title", "message")
print("askretrycancel", res)

サンプルプログラム
最後にサンプルプログラムを載せておきます。
ウィンドウを立ち上げて2つのボタンcheckとquitを配置しています。
checkボタンを押すと、メッセージボックスが表示されて再試行するか確認されます。
再試行を押すとメッセージボックスが再び表示され、キャンセルを押すとメッセージボックスは閉じるプログラムです。
import tkinter as tk
from tkinter import messagebox
def retry():
res = messagebox.askretrycancel("確認", "やり直しますか?")
if res:
retry()
root = tk.Tk()
root.geometry("{}x{}+{}+{}".format(100, 100, 300, 300))
button = tk.Button(root, text="check", relief="groove", command=retry)
button.pack()
quit = tk.Button(root, text="quit", relief="groove", command=root.quit)
quit.pack()
root.mainloop()