Wednesday, June 27, 2007

Text farbig darstellen mit Tk::Text

Wer mit Perl/Tk arbeitet weiß, dass es manchmal Sachen gibt, die man nur durch ausprobieren herausbekommt - oder durch Fragen in einem Forum. In letzter Zeit hat sich die Frage gehäuft, ob man bei Tk::Text bestimmte Textteile farbig markieren kann. Hier mal ein kleines Beispiel wie man Fehlermeldungen rot markieren kann:

#!/usr/bin/perl

use strict;
use warnings;
use Tk::Text;
use Tk;

my $mw = tkinit;
my $text = $mw->Text()->pack;
$text->tagConfigure('red_text', -foreground => 'red');

while( my $inhalt = ){

if( $inhalt =~ /^Fehler:/ ){
$text->insert('end',$inhalt,'red_text' );
}
else{
$text->insert('end',$inhalt );
}
}


MainLoop;

__DATA__
Dies ist ein Test!
Fehler: Laeuft nicht
Eine Zeile dazwischen.
Noch eine Zeile
Fehler: fehlerhafte Zeile
Fehler: noch ein Fehler
Alles ok!

2 comments:

Stefan said...

Falls die Farbgebung dazu dienen sollte, um Perl, Bash oder HTML farblich hervorzuheben (Syntax Highlighting), gibt es das vorzügliche Tk::CodeText-Modul.

ReneeB said...

Sehr guter Hinweis, bei Code-Fragmenten dürfte es sowieso zu aufwändig sein, Schlüsselworte etc. selbst zu parsen. Tk::CodeText kannte ich auch noch nicht!

Bei den Fragen im Forum ging es mehr darum, Zeilen mit Fehlermeldungen rot hervorzuheben.