proc setup filename { text .t -width 60 -height 10 -yscrollcommand ".scroll set" scrollbar .scroll -command ".t yview" pack .scroll -side right -fill y pack .t -side left set ::fp [open $filename] seek $::fp 0 end } proc read_more {} { set new [read $::fp] if [string length $new] { .t insert end $new .t see end } after 1000 read_more } setup logfile read_more # Notice this is portable code. # An industrial-strength version would probably exploit # namespaces ...