我有一个数值范围为 0-366 的旋转框,这意味着它只允许数字数据类型和退格键。每当用户键入一个字符时,如果不是数字类型,它将自动删除。我来自 C# 背景,这是我第一次尝试 Python 语言。这是我的代码。
def validate(event):
charPress=event.keysym
val=sbDays.get() #previous values
if not charPress.isdigit():
sbDays.config(textvariable=StringVar(windows).set(val))
sbDays=tk.Spinbox(frame,from_=0,to=366,borderwidth=sbBorderWidth)
sbDays.place(relx=initialX,rely=yDistance,relwidth=sbWidth)
sbDays.config(validate='all',validatecommand=(windows.register(validate),'% P'))
sbDays.update()
sbDays.bind('<Key>',validate)
从上面的代码中,当我运行它时,它什么也不返回。因为我来自 C# 背景。这是我真正需要的。这是 C# 按键事件
public static void TextBox_KeyPress_NumberBackspace(object sender, KeyPressEventArgs e)
{
char keyChar = e.KeyChar;
if (char.IsNumber(keyChar) || char.IsControl(keyChar))
e.Handled = false;
else
e.Handled = true;
}
tbDays.KeyPress += TextBox_KeyPress_NumberBackspace;