Python 3.x tkinter askyesno消息框行为

Python 3.x tkinter askyesno消息框行为,python-3.x,tkinter,tkmessagebox,Python 3.x,Tkinter,Tkmessagebox,在这段代码中,将打开askyesno消息框。如果我单击一次“是”,什么也不会发生;如果我再次单击它,控制台会显示“真”(只是添加了“真”以查看我返回的内容);如果我第三次单击它,messagebox将关闭,并打开正确的笔记本页面。“否”也会出现同样的行为。第一次单击,无任何内容,messagebox保持打开状态,但messagebox内的文本消失,只留下yes和no。第二次控制台打印False时,messagebox保持打开状态,第三次,messagebox关闭并打开正确的notepook页面。

在这段代码中,将打开askyesno消息框。如果我单击一次“是”,什么也不会发生;如果我再次单击它,控制台会显示“真”(只是添加了“真”以查看我返回的内容);如果我第三次单击它,messagebox将关闭,并打开正确的笔记本页面。“否”也会出现同样的行为。第一次单击,无任何内容,messagebox保持打开状态,但messagebox内的文本消失,只留下yes和no。第二次控制台打印False时,messagebox保持打开状态,第三次,messagebox关闭并打开正确的notepook页面。有人能解释一下我做错了什么吗?在你发布的代码中,你打开了三个对话框。每次调用
askyesno
都会出现一个对话框。您需要调用
askyesno
一次,保存它返回的值,然后在测试中使用该值

messagebox.askyesno(0.0,'"{0}"{1} \n {2}\n'.format(search_analyte.get(),' is  not in the database.','Add,if appropriate'))
        print (str(messagebox.askyesno()))
        if messagebox.askyesno() == True:
            open_second()
        else:
            open_first()

我插入的用于查看返回内容的print语句生成一个“非事件”,即消息从messagebox中消失,但在再次按下之前保持打开状态。所以问题是,为什么“是”或“否”需要点击两下才能执行完整的条件?你能写一个完整的小程序来说明这一点吗?我想知道你是否忘记了一个步骤,比如运行mainloop,或者你正在使用threads?我会继续。感谢您的响应删除了小部件的所有其他功能,只留下了add将messagebox的行为更改为它应该做的事情!无法重现错误。我将开始添加所有内容并查看问题的原因stackoverflow不允许我以新问题的形式提交代码,通知我未达到要求的标准。使用注释工具将超出长度。否则我怎么能这样做?现在可以重现错误
result = messagebox.askyesno(...)
if result:
    ...