如果输入数字作为输入,那么给出错误并告诉用户只输入数字的最佳方法是什么?代码不起作用:
if self.localid_entry.get() == int(self.localid_entry.get():
self.answer_label['text'] = "Use numbers only for I.D."
该变量在Tkinter中获得:
self.localid2_entry = ttk.Entry(self, width=5)
self.localid2_entry.grid(column=3, row=2)
答案 0 :(得分:3)
最佳解决方案是使用验证功能仅允许整数,这样您就不必担心用户完成后的验证。
请参阅https://stackoverflow.com/a/4140988/7432以获取仅允许字母的示例。将其转换为仅允许整数是微不足道的。
答案 1 :(得分:0)
这样的事情:
try:
i = int(self.localid_entry.get())
except ValueError:
#Handle the exception
print 'Please enter an integer'
答案 2 :(得分:0)
Bryan有正确答案,但使用tkinter的验证系统非常笨重。我更喜欢使用变量上的跟踪来检查。例如,我可以创建一个只接受数字的新类型的条目:
class Prox(ttk.Entry):
'''A Entry widget that only accepts digits'''
def __init__(self, master=None, **kwargs):
self.var = tk.StringVar(master)
self.var.trace('w', self.validate)
ttk.Entry.__init__(self, master, textvariable=self.var, **kwargs)
self.get, self.set = self.var.get, self.var.set
def validate(self, *args):
value = self.get()
if not value.isdigit():
self.set(''.join(x for x in value if x.isdigit()))
您可以像使用Entry小部件一样使用它:
self.localid2_entry = Prox(self, width=5)
self.localid2_entry.grid(column=3, row=2)