如何旋转框只允许数字



我希望你只能在spinbox中输入数字,因为在这个问题中,他们在htmljs中输入,我所做的是以下代码

self.infectedDefauld = tk.StringVar(self)
self.infectedDefauld.set("1")
self.populationSpin = tk.Spinbox(self.leftFrame, from_=1, to=100, width=5, bg=colorFive, fg=colorFour, textvariable=self.totalDefauld, bd=10, relief="flat")
self.populationSpin.pack(side="top", pady=5)
self.totalDefauld.trace(mode="w", callback=self.onValidationPopulation)

def onValidationPopulation (self, varname, elementname, mode):
m = re.search(r'd+', self.populationSpin.get())
if m: 
self.totalDefauld.set(m.group(0))
else:
self.totalDefauld.set(0)

问题是,当我写示例2时,它会变为20

与Entry小部件一样,spinbox支持输入验证。这比使用变量跟踪要好,因为跟踪不应该修改正在跟踪的变量。此外,它还可以用来防止输入字符,而不必在输入字符后删除字符。

以下是它在您的代码中的样子:

class Example(tk.Frame):
def __init__(self, parent):
super().__init__(parent)
self.leftFrame = tk.Frame(self)
self.leftFrame.pack(side="left", fill="y")
self.populationSpin = tk.Spinbox(
self.leftFrame, from_=1, to=100,
width=5, bg=colorFive, fg=colorFour,
bd=10, relief="flat",
validate="key",
validatecommand=(self.register(self._validate), "%P")
)
self.populationSpin.pack(side="top", pady=5)
def _validate(self, P):
return P.isdigit()

最新更新