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
在下面的示例代码中:
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