TCL/TK Text命令始终显示最后一个输入行

1 tk-toolkit tcl

我只想弄清楚如何插入变量的内容,.txt insert end $var并将我插入的内容自动显示在最后一行,而无需手动向下滚动文本.

一个简单的TCL示例:

proc push_button { } {
    global k
    set name [.ent get]
    .txt insert end "$k New Line...$name\n"
}
global k
set k 1
frame .frm -relief groove
label .lab -text "Enter name:"
entry .ent
button .but -text "Insert Line" -command "push_button; incr k"
text .txt -width 20 -height 10
pack .lab -in .frm
pack .ent -in .frm
pack .frm
pack .but
pack .txt
Run Code Online (Sandbox Code Playgroud)

Pet*_*rin 5

尝试.txt see end使索引end可见.为了避免在底部出现空白行,您可能需要使用.txt see end-2c哪一个在最后一个\n可见之前使角色成为可能.end-2l也会工作(c=字符,l=行,你需要2因为小部件在你插入的最后一个字符后添加一个额外的换行符).每次向窗口小部件添加文本时都会执行此操作.

例如:

proc push_button { } {
    global k
    set name [.ent get]
    .txt insert end "$k New Line...$name\n"
    .txt see end-2c
}
Run Code Online (Sandbox Code Playgroud)

文档:global,proc,set,text