我在Tcl上看到了這樣的代碼:
entry .amount -validate key -validatecommand {
expr {[string is int %P] ? || [string length %P]==0 }
}
我知道這是一個條目驗證,但是,該代碼中的"%P "是什么?我在Tcl的檔案中找過,但我什么都沒找到。
我想這是另一種方法,但它有相同的符號:
proc check_the_input_only_allows_digits_only {P} {
expr {[string is int P] ! || [string length P] == 0 }
}
條目.金額
-validate key
-validatecommand {check_the_input_only_allows_digits_only %P}
uj5u.com熱心網友回復:
entry的tcl-tk頁面說
%P
如果允許編輯,條目的值。如果你正在配置entry widget以擁有一個新的textvariable,這將是該textvariable的值。
https://www.tcl.tk/man/tcl8.4/TkCmd/entry.html#M25
uj5u.com熱心網友回復:
我想這是另一種方法,但它有相同的符號:
我想這是另一種方法,但它有相同的符號。
你很接近了。你只是在一些地方使用了$,因為你只是在運行一個程序,這和使用程序的引數一樣正常。
proc check_the_input_only_allows_digits_only {P} {
expr {[string is int $P] || [string length $P] == 0}。
}
條目 .金額
-validate key
-validatecommand {check_the_input_only_allows_digits_only %P}.
建議你使用存盤程序來撰寫這樣的東西,除了最微不足道的驗證(或其他回呼)之外;將復雜性直接放在回呼中會很快變得混亂。
我建議在輸入階段保持寬松的驗證,并且只在表單提交(或按下OK/Apply按鈕,或任何在 GUI 中有意義的東西)時對東西進行嚴格的驗證,這正是因為在許多表單中,當輸入時,無效的狀態會有一段時間的存在,這非常方便。因此,每個鍵的驗證可能應該只用于表明是否相信表單提交會成功,而不是直接阻止甚至是瞬時的存在。
string is int命令對于零長度的輸入回傳 true,這正是因為它最初是為了與該驗證機制一起作業。這讓我很不爽,實際驗證一個整數需要string is int -strict。
entry .amount -validate key -validatecommand {string is int %P}。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/311810.html
標籤:
