2014-12-05 72 views
0

我已經使用root.bind("<Return>",enter),當按下回車鍵(回車鍵)時,它會調用函數進入。輸入函數讀取一些輸入字段,並可能根據輸入調用tkMessageBox.showerror(header,text)。按回車鍵都將按錯誤上的OK並使tkMessageBox.showerror(header,text)再次出現,儘管tkMessageBox.showerror(header,text)之後的下一行是inputfield.delete(0,END)。當返回鍵被綁定時,Tkinter showerror會再次出現

這是代碼:

enter(): 
    showerror("Error","Wrong input") 
    streckkodEntry.delete(0,END) 

這解決了它:

enter(): 
    disable() 
    showerror("Error","Wrong input") 
    enable() 
    streckkodEntry.delete(0,END) 

其中disable()刪除綁定和enable()放回去

是否只能在我的機器上會出現此問題Debian 7.0,但不是我的Windows機器。任何想法如何解決它而無需爲每個showerror添加禁用/啓用?

+1

我認爲我們沒有足夠的信息來回答這個問題。你是否有與該條目相關的變量的痕跡?您是否具有與條目相關的驗證?你能創建一個非常小的程序來複制問題嗎? – 2014-12-05 22:28:58

+0

如果您將綁定到根目錄,我很驚訝您不必禁用Windows上的綁定,但這顯然是處理的系統相關特性之一。這可能與沒有將根傳遞給淋浴錯誤有關。嘗試將綁定到Entry小部件。 – 2014-12-05 23:13:47

回答

1

我發現了問題!我仍然將綁定定義爲bind_all而不是bind。在Windows中,這並不重要,因爲錯誤消息阻止了bind_all綁定,只有錯誤消息可以與之交互。當出現錯誤消息時,Debian 7.0不會阻止bind_all,並且綁定也在錯誤消息的後面工作。

相關問題