Ich bin mit Tcl bequem, aber Neuling mit TK. Ich möchte einige Texte in einem Fenster anzeigen und nach mehreren Suchen habe ich hier ein Beispiel gefunden, das mir gut erscheint. Mein Problem ist, dass die Anzeige nicht in Echtzeit, sondern nur wenn das Programm endet. Hier sind die Hauptlinien meines Programms.Terminal Text nicht in tcltk Fenster Echtzeit angezeigt
Main_program.tcl
#!/bin/sh
# -*- tcl -*-
# The next line is executed by /bin/sh, but not tcl \
exec /usr/local/Cellar/tcl-tk/bin/tclsh "$0" "[email protected]"
set DEBUG 1
source ./GUI_mgt.tcl
source ./utils.tcl
for {set i 0} {$i<500} {incr i} {
after 10
debug_puts $i
}
utils.tcl
proc debug_puts {message} {
if {$::DEBUG} { writeToLog $message }
}
GUI_mgt.tcl
package require Tk
grid [text .log -state disabled -width 80 -height 24 -wrap none]
proc writeToLog {msg} {
set numlines [lindex [split [.log index "end - 1 line"] "."] 0]
.log configure -state normal
if {$numlines==24} {.log delete 1.0 2.0}
if {[.log index "end-1c"]!="1.0"} {.log insert end "\n"}
.log insert end "$msg"
.log configure -state disabled
}
Frage: was falsch ist oder in diesem Code verpasst? Kennen Sie ein Paket oder ein Beispiel, das ich verwenden kann, um Sätze in einem separaten Fenster anzuzeigen?
Hinweis: Ich benutze tcl tk 8.6.6 auf macOS Sierra 10.12.5
Dank Brad, Ihre vwait Idee funktioniert perfekt. Ich werde Ihre zweite Idee mit einem separaten Thread versuchen. Es ist eine Idee, die ich sehr mag. –