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

时间:2016-02-10 00:52:39

标签: tcl tk

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

1 个答案:

答案 0 :(得分: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
}

文档:globalprocsettext