2014-08-31 80 views
0

我寫了下面的根據this post腳本:只有框TextChanged /的KeyDown入境/文本框

from tkinter import * 

class MainWindow(Tk): 
    def __init__(self): 
     super(MainWindow, self).__init__() 
     self.geometry("500x300+433+234") 
     self.title("Hallo") 

     self.__tbIn_Txt = StringVar(None, "Hallo") 
     self.__tbIn = Entry(self, textvariable = self.__tbIn_Txt, validate = "all") 
     self.__tbIn.config(validatecommand = (self.register(self.__check),)) 
     self.__tbIn.pack() 

    def __check(self): 
     print("Check") 

    def show(self): 
     self.mainloop() 

wMain = MainWindow() 
wMain.show() 

__check火災,我第一次單擊文本框/輸入,但從來沒有一次。我想實現KeyDown/KeyUp/KeyPress/TextChanged行爲,但似乎我的腳本導致了一個OnClick事件。如何使文本框在條目的值發生變化時致電__check

我在Windows 7 64位上運行Python 3.4(64位)。

回答

2

validatecommand必須返回True或False,否則tkinter將取消進一步驗證。

+0

啊。謝謝:) – Cubinator73 2014-08-31 11:16:46

+0

值得注意的是,還有其他方法可以取消進一步的驗證,特別是[this](http://stackoverflow.com/questions/1019782/python-tkinter-entry-fun)。與這個問題不直接相關,而是一個常見且難以發現的驗證問題。 – strubbly 2015-10-23 07:24:38

相關問題