Python Tkinter-不确定如何使用messagebox.askretrycancel()函数

Python Tkinter-不确定如何使用messagebox.askretrycancel()函数,python,python-3.x,tkinter,Python,Python 3.x,Tkinter,我有一个正在使用的函数,它根据输入的关键字显示不同的数字,并决定使用simpledialog.askstring()来显示一个我可以输入关键字的messagebox。当我输入的关键字错误时,我想显示一个消息框,询问我是否要重试并重新输入该关键字,但我似乎无法让它对我起作用 到目前为止,我的代码是: from tkinter import Tk from tkinter import simpledialog, messagebox def display_figure(): appli

我有一个正在使用的函数,它根据输入的关键字显示不同的数字,并决定使用simpledialog.askstring()来显示一个我可以输入关键字的messagebox。当我输入的关键字错误时,我想显示一个消息框,询问我是否要重试并重新输入该关键字,但我似乎无法让它对我起作用

到目前为止,我的代码是:

from tkinter import Tk
from tkinter import simpledialog, messagebox

def display_figure():
    application_window = Tk()
    application_window.withdraw()

    answer = simpledialog.askstring("Input", "What figure do you want to look at: 'Fig1', 'Fig2', 'Fig3', or 'Fig4'?", parent=application_window)
    if   answer == 'Fig1': (Code to display Fig1)
    elif answer == 'Fig2': (Code to display Fig2)
    elif answer == 'Fig3': (Code to display Fig3)
    elif answer == 'Fig4': (Code to display Fig4)
    else: messagebox.askretrycancel("Question", "Error: Not a recognized keyword. Do you want to try again?")

我不知道当点击消息框中的“重试”按钮时,如何返回到上一个问题,再次询问关键字,以便了解更多信息。

askretrycancel
始终返回布尔值。按下时,重试返回
True
,按下取消时返回
False
。您需要使用
while
循环,在回答正确或按下
取消按钮之前不要中断循环。以下是代码:

from tkinter import Tk
from tkinter import simpledialog, messagebox

def display_figure():
    application_window = Tk()
    application_window.withdraw()
    while True:
        answer = simpledialog.askstring("Input", "What figure do you want to look at: 'Fig1', 'Fig2', 'Fig3', or 'Fig4'?", parent=application_window)
        if   answer == 'Fig1': print(answer);break
        elif answer == 'Fig2': print(answer);break
        elif answer == 'Fig3': print(answer);break
        elif answer == 'Fig4': print(answer);break
        else:
            if messagebox.askretrycancel("Question", "Error: Not a recognized keyword. Do you want to try again?") == False:
                break


display_figure()