2011-10-21 4 views
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 

다음 추가 옵션이 필요합니다. iwidgets::scrolledtext가 열릴 때

  1. 즉, 온라인 iwidgets::scrolledtext을 만들려면 내가 /path/to/some/file에서 파일에 몇 줄을 추가 할 때, 나는 iwidgets::scrolledtext가 자동으로 업데이트하고자합니다.
  2. iwidgets::scrolledtext에 텍스트를 고정 시키려면, 즉 텍스트가 편집되지 않도록합니다.

답변

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

다른 말로하면 유닉스 '꼬리'명령과 같은 기능을 원합니다.

iwidgets는 아니지만 코드를 쉽게 적용해야하므로 Tcl'ers 위키의 꼬리표를 살펴보십시오. http://wiki.tcl.tk/1158

관련 문제