TCL/TK 文本命令总是显示最后输入行

TCL/TK Text command always shows the last input line

我只是想弄清楚如何通过 .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

尝试 .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
}

文档:global, proc, set, text