【发布时间】:2016-02-08 12:14:44
【问题描述】:
我做了一个申请。它工作正常,除了一件事。我希望某些标签根据条目小部件的内容获得不同的背景颜色,如果内容匹配,则应删除条目的内容,以便可以输入更多数据。我做了一个有同样问题的示例应用程序。
#!/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 主机上。
任何人都知道为什么验证停止做它应该做的事情?
【问题讨论】:
标签: python linux windows tkinter