回答
入口驗證回調是方式,而%P
替換是關鍵。從the docs:
%P
項的值,如果編輯被允許。如果您將條目窗口小部件配置爲具有新的文本變量,則這將是該文本變量的值。
這意味着我們做的只是這一點:
pack [entry .e -width 50 -validate all -validatecommand {
expr {[string length %P] <= 30}
}]
你去那裏,你將無法做任何編輯,這使得它的長度去了30(小部件這可能是最好的還添加一個-invalidcommand
規範,以便用戶可以找出發生了什麼。)
我不認爲有一個,但你可以按照如下的輸入小工具使用驗證:
package require Tk
pack [entry .e -validate all -validatecommand {max_length %s 30 %d}]
proc max_length {val max act} {
if {[string length $val] >= $max && $act == 1} {
return 0
}
return 1
}
輸入框會嘗試驗證每個條目,並將當前字符串%s
和動作%d
到proc
命名爲max_length
在這個過程中,檢查長度和動作。如果長度大於30並且動作是1
(表示插入),則proc將返回0,從而停止再次插入。
如果用戶單擊第一個字符,然後鍵入已有30個字符時該怎麼辦?如果他們在第29位粘貼40個字符會怎麼樣? – 2014-10-10 12:45:10
@BryanOakley好點,並修復。 – Jerry 2014-10-10 13:13:41
@Jerry:謝謝,很好的回答:) +1 – user1336087 2014-10-10 14:57:41
- 1. 輸入限制字符數
- 2. 輸入文字的字符數限制
- 3. 最大字符數限制和最小字符放置條件的條件
- 4. 限制用戶輸入的數字量
- 5. jQuery HtmlBox限制字數/字符輸入
- 6. Perl TK - 將文本包裝到條目窗口小部件中
- 7. 從tk :: menu小部件中刪除subwidgets /條目
- 8. Tkinter條目字符數限制
- 9. 如何限制輸入的字符數
- 10. 限制輸入到UITextField的字符數
- 11. 限制JTextField字符輸入
- 12. Tcl/Tk:限制調整「文本」部件的大小
- 13. Perl tk - 條目窗口小部件之間的標籤
- 14. 限制輸入的字符,只是數量
- 15. 如何限制用戶可以輸入的字符數量?
- 16. 如何限制EditText框輸入小數點後兩個字符?
- 17. jquery:僅限數字輸入,但也限制字符數
- 18. 在Gtk :: Entry小部件中強制輸入數字
- 19. NumberPad限制數字輸入
- 20. 在tkinter(python)的條目窗口小部件中設置一個整數限制
- 21. 的Android EDITTEXT限制輸入的字符
- 22. 限制輸入字段中的字符數
- 23. 在Tcl/Tk輸入字段強制輸入大寫字母
- 24. 限制輸入中的字符/字符串/字
- 25. SSRS文本框條目限制字符
- 26. 限制LUIS字符數量?
- 27. Python/Tk:鏈接單獨行上的框架中的條目小部件
- 28. 貨幣轉換器中的tk條目和optionmenu小部件的問題
- 29. 用戶輸入的TinyMCE限制字符
- 30. 限制輸入到text_field的字符
感謝您的簡短和甜蜜的解決方案:) +1 – user1336087 2014-10-10 14:59:36