2013-05-13 130 views
1
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() 

在这段代码中,打开askyesno消息框。如果我点击'是'一次,没有任何反应,如果我再次点击它,'真'被打印到控制台(只是添加了看看我回来了),如果我第三次点击它,消息框关闭,正确的笔记本页面打开。 'no'发生同样的行为。首先单击,没有任何东西,messagebox保持打开状态,但消息框内的文本消失,只剩下yes,no。第二次False打印到控制台上,第三次打开盒子,盒子关闭,正确的记事本页面打开。有人可以解释我所做的不正确的请tkinter askyesno消息框行为

+0

我插入看到正在返回什么产生the'non事件,即从消息消息框消失的一个print语句,但直到再次按下保持开放。所以问题是为什么是或否需要两次点击才能执行完整的条件 – user1478335 2013-05-13 13:56:51

+0

您能编写一个完整的小程序来说明这一点吗?我想知道你是否忘记了一个步骤,比如运行主循环,或者你正在使用线程? – 2013-05-13 17:22:34

+0

会继续下去。感谢您的回复 – user1478335 2013-05-14 10:32:59

回答

2

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

result = messagebox.askyesno(...) 
if result == True: 
    ...