以下是iwidgets::scrolledtext
的TCL代码演示示例。
package require Iwidgets
iwidgets::scrolledtext .st \
-labeltext "Scrolledtext Example" \
-visibleitems 70x20 \
-textfont {Courier 10} \
-textbackground black \
-vscrollmode dynamic \
-hscrollmode dynamic \
-wrap none
pack .st -fill both -expand true
.st component text configure -foreground green
.st import /path/to/some/file
我需要以下附加选项。
iwidgets::scrolledtext
在线,即在iwidgets::scrolledtext
打开时以及在/path/to/some/file
添加一些文件行时,我希望iwidgets::scrolledtext
自动更新。< / LI>
iwidgets::scrolledtext
静态,即阻止文本编辑。答案 0 :(得分:2)
尝试使用scrolledtext类的这个小子类:
itcl::class TailScrolled {
inherit iwidgets::Scrolledtext
destructor {}
public method import {filename}
private variable fd
private variable cb
private method ReadAppend {}
}
itcl::body TailScrolled::destructor {} {
if {[info exist fd]} {
close $fd
after cancel $cb
}
}
itcl::body TailScrolled::import {filename} {
if {[info exist fd]} {
close $fd
after cancel $cb
}
set fd [open $filename r]
ReadAppend
}
itcl::body TailScrolled::ReadAppend {} {
set cb [after 500 [::itcl::code ReadAppend]]
insert end [read $fd]
}
(警告:我实际上没有尝试过,所以我可能会从IWidgets小部件中确切地说如何继承。这是如何做到这一点的原则。)
答案 1 :(得分:1)
所以换句话说,你想要一些像unix'tail'命令这样的功能。
不是真的对于iwidgets,但代码应该很容易适应,所以看看Tcl'ers wiki上的尾部小部件。 http://wiki.tcl.tk/1158