use Time::HiRes qw(sleep); use Tk; use Tk::Scrollbar; #================================ Variablen =========================================================== $trigger = 0; $max_zeilen = 50; ################################# TK-Abschnitt ######################################################## #================================ Hauptfenster ======================================================== $HF = new MainWindow (); $HF->geometry('430x350'); #================================ Text-Frame ========================================================== $Frame1 = $HF -> Frame(-width => 427, -height => 220,-borderwidth => 3, -relief => groove, -bg => black); $Frame1->place(-x=> 2, -y=> 19); $Textframe = $Frame1->Scrolled(Text, -wrap,none, -scrollbars => 'se', -height => 12, -width => 55, -bg => black, -fg => white)->pack(-expand => 'yes', -fill => 'both', -side => 'left'); #================================ Buttons ============================================================= $BtnStart = $HF->Button( -text=>" START ", -command => sub {$trigger = 0;$timer = $HF->repeat(200, sub{Ausgabe();})}, -font=>"Century 10"); $BtnStart->place(-x=> 2, -y=>260); $BtnStop = $HF->Button( -text=>" STOP ", -command => sub {$trigger = 1;}, -font=>"Century 10"); $BtnStop->place(-x=> 140, -y=> 260); $BtnQuit = $HF->Button( -text=>" QUIT ", -command => sub{exit;}, -font=>"Century 10"); $BtnQuit->place(-x=> 280, -y=> 260); MainLoop(); ################################# Ende TK-Abschnitt ################################################### sub Ausgabe () { if($trigger eq 1) { #======= Stoptext ausgeben $Textframe->insert("end", "\nGestoppt"); #===== Anzahl Ausgabe-Zeilen begrenzen if($zaehler > $max_zeilen){$Textframe->delete('0.0', "2.0");} #======= Ausgabefenster-Scrollbalken auf letzten Eintrag stellen $Textframe->yview(moveto => '1.0'); #======= Timer canceln $timer->cancel; #======= Stop Sub return; } $zaehler++; #===== Anzahl Ausgabe-Zeilen begrenzen if($zaehler > $max_zeilen){$Textframe->delete('0.0', "2.0");} #===== Scrollbalken auf den letzten Eintrag stellen $Textframe->yview(moveto => '1.0'); $Textframe->insert("end", "\n$zaehler"); }