2013-05-13 72 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: 
    ...