Tcl/Tk: 水平滚动条不能随滚动条缩小

Tcl/Tk: horizontal xscrollbar can not shrink as y scollbar

在下面的示例代码中:

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 无法按预期工作。

我的工具需要这样的效果。那么有什么帮助吗?

您遇到的问题是因为文本换行。默认的文字换行模式好像是char(达到宽度限制后文字会被分割成更多的行,并且会按字符分割)。

更改以下行以获得您期望看到的行为:

text .txt -width 20 -height 10 \
    -yscrollcommand ".srl_y set" -xscrollcommand ".srl_x set" -wrap none

我在最后加了-wrap none