为了账号安全,请及时绑定邮箱和手机立即绑定

Python Tkinter - 不确定如何使用 messagebox.askretr

Python Tkinter - 不确定如何使用 messagebox.askretr

HUWWW 2021-06-04 14:23:20
我有一个正在处理的函数,它根据输入的关键字显示不同的数字,并决定使用 simpledialog.askstring() 来显示一个消息框,我可以在其中输入我的关键字。当我输入错误的关键字时,我想显示一个消息框,询问我是否要重试并重新输入关键字,但我似乎无法让它为我工作。到目前为止我的代码:from tkinter import Tkfrom tkinter import simpledialog, messageboxdef 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?")当单击生成的消息框中的“重试”按钮时,我不确定如何循环回到上一个问题以再次询问关键字,因此将不胜感激。
查看完整描述

1 回答

?
MMMHUHU

TA贡献1834条经验 获得超8个赞

askretrycancel总是返回布尔值。按下时重试返回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()


查看完整回答
反对 回复 2021-06-08
  • 1 回答
  • 0 关注
  • 114 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号