У меня есть приложение, которое я сделал. Он отлично работает, за исключением одного. Я хочу, чтобы определенные ярлыки получали разные цвета фона в зависимости от содержимого виджета 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()
Проблема в том, что после первого раза что-то совпадение и содержимое виджета Entry удаляются. Команда проверки перестает работать. У меня есть подозрение, что это факт, что я удаляю содержимое записи, которая вызывает эту проблему, но я не уверен. Я подтвердил, что эта проблема существует на хостах Linux и хостах Windows.
У кого-нибудь есть идея, почему валидация перестает делать то, что она должна делать?