Как ограничить ввод в поле ввода? - PullRequest
0 голосов
/ 06 июня 2018

При написании пользовательского интерфейса, который в конечном итоге изменяет текстовый файл, я хотел знать, смогу ли я убедиться, что ввод пользователя находится в предопределенном диапазоне.

Например, я хочу, чтобы пользователь вводил только значенияот 10000 до 99999

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

1 Ответ

0 голосов
/ 06 июня 2018

Вы хотите использовать опции -validate, -validatecommand и -invalidcommand для виджета entry : демо

#!/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
...