如何在线制作滚动文本?

发布于 2024-12-11 08:04:29 字数 750 浏览 0 评论 0原文

以下是 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

我需要以下附加选项。

  1. 使 iwidgets::scrolledtext 在线,即当打开 iwidgets::scrolledtext 时以及当我向 /path/to/some/file 处的文件添加一些行时,我希望 iwidgets::scrolledtext 自动更新。
  2. 使iwidgets::scrolledtext处的文本静态,即防止文本被编辑。

Here is a demo sample of TCL code for iwidgets::scrolledtext.

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

I need the following additional options.

  1. To make iwidgets::scrolledtext online, i.e. when iwidgets::scrolledtext is opened and when I add some lines to file at /path/to/some/file, I want the iwidgets::scrolledtext to be updated automatically.
  2. To make the text at iwidgets::scrolledtext static, i.e. to prevent the text from editing.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

岁吢 2024-12-18 08:04:30

尝试一下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小部件进行继承。不过,这是如何做到这一点的原则。)

Try this little subclass of the scrolledtext class:

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]
}

(Warning: I've not actually tried it, so I might've fluffed exactly how to do inheritance from an IWidgets widget. This is the principle of how to do it though.)

随风而去 2024-12-18 08:04:30

换句话说,您需要某种功能,例如 unix 'tail' 命令。

确实不适合 iwidgets,但代码应该很容易调整,所以请查看 Tcl'ers wiki 上的 tailing widget。
http://wiki.tcl.tk/1158

So in other words you want some kind of functionality like the unix 'tail' command.

Not really for iwidgets, but the code should be easily adapted, so have a look at the tailing widget on the Tcl'ers wiki.
http://wiki.tcl.tk/1158

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文