我正在使用一个函数,该函数根据输入的关键字显示不同的数字,并决定使用simpledialog.askstring()来显示一个消息框,我可以在其中输入关键字。当我输入错误的关键字时,我想显示一个消息框,询问我是否要重试并重新输入该关键字,但似乎无法使它对我有用。
到目前为止,我的代码:
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?")
我不确定如何在单击所产生的消息框中的“重试”按钮时再次返回上一个问题,以再次请求关键字,以便对任何见解表示赞赏。
答案 0 :(得分:0)
askretrycancel
始终返回布尔值。当按下Retry键时,返回True
和False
。您将需要使用while
循环,并且在答案正确或按下Cancel
之前不要中断循环。这是代码:
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()