如何限制输入字段中的输入?

How to limit the input in an entry field?

写一个UI最终修改了一个文本文件,我想知道我是否可以确保用户的输入在预定义的范围内。

例如,我希望用户只输入 10000 到 99999 之间的值

label .labelSalary -text "Enter Salary"
entry .entrySalary -width 20 -relief sunken -textvariable salary

您需要为 entry widget 使用 -validate-validatecommand-invalidcommand 选项:演示

#!/usr/bin/env tclsh
package require Tk

proc validateSalary {} {
    expr {$::salary eq "" || (10000 <= $::salary && $::salary <= 99999)}
}

proc invalidSalary {} {
    tk_messageBox -type ok -icon warning \
        -title "Invalid Salary" \
        -message "Salary $::salary is not in the requested range" 
}

label .labelSalary -text "Enter Salary"
entry .entrySalary -width 20 -relief sunken -textvariable salary \
    -validate focusout \
    -validatecommand validateSalary \
    -invalidcommand invalidSalary

pack .labelSalary .entrySalary -side left