tkinter askyesno 消息框行为

use*_*335 2 tkinter tkmessagebox python-3.x

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()
Run Code Online (Sandbox Code Playgroud)

在这段代码中,askyesno 消息框打开。如果我单击“是”一次,什么也不会发生,如果我第二次单击它,“真”将打印到控制台(只是添加以查看我返回的内容),如果我第三次单击它,消息框将关闭并正确的笔记本页面打开。'no' 也会发生同样的行为。首先单击,什么都没有,消息框保持打开状态,但消息框中的文本消失,只留下是、否。第二次 False 打印到控制台,盒子保持打开状态,第三次,盒子关闭,正确的记事本页面打开。有人可以解释一下我做错了什么吗

Bry*_*ley 5

在您发布的代码中,您打开了三个对话框。每次您打电话时,askyesno您都会收到一个对话框。您需要调用askyesno一次,保存它返回的值,然后在测试中使用该值。

result = messagebox.askyesno(...)
if result:
    ...
Run Code Online (Sandbox Code Playgroud)