我有一个条目小部件,我希望用户只能输入0到100之间的数字。我弄清楚了如何只让用户输入数字,但现在我不知道如何跟踪小部件中输入的内容,并确保它不超过100....
from tkinter import *
class Prox(Entry):
'''Entry widget that only accepts digits'''
def __init__(self, master=None, **kwargs):
self.var = StringVar(master)
self.var.trace('w', self.validate)
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()))
def character_limit(entry_text):
if len(entry_text.get()) > 0:
entry_text.set(entry_text.get()[-1])
window = Tk()
percEntry = Prox(window)
percEntry.insert(0, '0')
percEntry.grid(row=0, column=0)
window.mainloop()
在这种情况下,尝试使用SpinBox而不是Entry Widget。
例如:
from tkinter import *
top = Tk()
top.geometry("200x200")
spin = Spinbox(top, from_= 0, to = 25)
spin.pack()
top.mainloop()
要获取SpinBox当前值,只需执行以下命令:spin.get()