1
我有我提出的一個應用程序。除了一件事以外,它工作正常。我希望某些標籤根據Entry小部件的內容獲取不同的背景顏色,並且如果內容匹配,則應刪除Entry的內容以便輸入更多數據。我做了一個具有相同問題的示例應用程序。在特定情況下觸發時,條目驗證停止工作
#!/usr/bin/env python
import re
import Tkinter as tk
class Frontend:
def __init__(self):
self.root = tk.Tk()
self.frame = tk.Frame(self.root)
self.vcmd = (self.frame.register(self.validate), '%P')
self.entry = tk.Entry(self.frame, vcmd=self.vcmd, validate='key')
self.label1 = tk.Label(self.frame, text='Foo', bg='green')
self.label2 = tk.Label(self.frame, text='Bar', bg='green')
self.frame.pack()
self.entry.pack()
self.label1.pack()
self.label2.pack()
self.entry.focus()
def validate(self, inputstring):
if re.match(r'^foo$', inputstring):
self.label1.config(bg='red')
self.entry.delete(0, tk.END)
elif re.match(r'^bar$', inputstring):
self.label2.config(bg='red')
self.entry.delete(0, tk.END)
elif re.match(r'^delete$', inputstring):
self.label1.config(bg='green')
self.label2.config(bg='green')
self.entry.delete(0, tk.END)
return True
def start(self):
self.root.mainloop()
if __name__ == '__main__':
root = Frontend()
root.start()
的問題是,在第一時間匹配的東西后輸入構件的內容被刪除。驗證命令停止工作。我懷疑這是事實,我刪除了導致此問題的條目的內容,但我不確定。我已確認Linux主機和Windows主機上存在此問題。
任何人都有一個想法,爲什麼驗證停止做它應該做的事情?