在以下示例代码中:
proc push_button {} {
set name [.ent get]
.txt insert end "Hello, $name."
}
frame .frm -relief groove
label .lab -text "Enter name:"
entry .ent
button .but -text "Push Me" -command "push_button"
frame .textarea
text .txt -width 20 -height 10 \
-yscrollcommand ".srl_y set" -xscrollcommand ".srl_x set"
scrollbar .srl_y -command ".txt yview" -orient v
scrollbar .srl_x -command ".txt xview" -orient h
pack .lab -in .frm
pack .ent -in .frm
pack .frm
pack .but
grid .txt -in .textarea -row 1 -column 1
grid .srl_y -in .textarea -row 1 -column 2 -sticky ns
grid .srl_x -in .textarea -row 2 -column 1 -sticky ew
pack .textarea
按下按钮Push Me
,新文本字符串将添加到文本框中。在.txt insert end "Hello, $name."
中,没有新的行\n
符号。所以它应该形成一个很长的字符串。
我的理解是随着字符串变长,水平scollbar应该相应地改变和缩小。但xscollbar无法按预期工作。
我的工具需要这样的效果。那么对此有何帮助?
答案 0 :(得分:1)
您遇到的行为是因为文本换行。默认的文本换行模式似乎是char
(当达到宽度限制时,文本将被拆分为更多行,并且它将基于字符分割。)
更改以下行以获得您期望看到的行为:
text .txt -width 20 -height 10 \
-yscrollcommand ".srl_y set" -xscrollcommand ".srl_x set" -wrap none
我在最后添加了-wrap none
。