GUI mit Perl/Tk

Perl/Tk-Tutorial

Kapitel 12: Steuerelement - Canvas

Das Fensterelement Canvas ist eine Art Zeichenfläche, die Sie als Programmierer oder auch interaktiv mit dem Benutzer füllen können.

canvas1.pl

#!perl

use strict;
use warnings;
use Tk;

my $mw = MainWindow->new();

my $c1 = $mw->Canvas(
    -width  => '350',
    -height => '350',
)->pack();

$c1->createLine(
    25, 175, 325, 175,
    -arrow => 'last',
);
$c1->createText(
    15, 175,
    -fill  => 'blue',
    -text  => 'X',
);
$c1->createLine(
    175, 325, 175,  25,
    -arrow => 'last',
);
$c1->createText(
    175,  15,
    -fill  => 'red',
    -text => 'Y',
);

$mw->MainLoop();

So sieht das Ergebnis aus:

Koordinatensystem in der Canvas-Zeichenfläche

Hiermit erzeugen Sie auf dem Canvas-Fensterelement mit der Größe 350x350 ein x/y-Koordinatenfeld. Für Canvas-Widgets stehen einigen Funktionen zur Verfügung zum Zeichnen von geometrischen Formen. Diese beginnen meist mit create.

$c1->createLine(25, 175, 325, 175, -arrow => 'last');

bedeutet: der Anfangspunkt der Linie ist an Position x=25 und y=175 und der Endpunkt an Position x=325 und y=175. Mit arrow => last fügen wir einen Pfeil am Ende der Linie an. Es wäre z.B. noch die Angabe für arrow möglich gewesen wie : arrow => first am Anfang und arrow => both an beiden Seiten. Mit

$c1->createText(175, 15, -fill => 'red', -text => 'Y');

erzeugen Sie einen Text an Position x=175 y=15 mit roter Farbe, ein 'Y'.


Es gibt viele geometrische Formen und Optionen wie am folgenden Beispiel zu sehen ist.

canvas2.pl

#!perl

use strict;
use warnings;
use Tk;

my $mw = MainWindow->new();

my $c1 = $mw->Canvas(
    -width  => '350',
    -height => '350',
)->pack();

my $schalter1 = $mw->Button(
    -text => "createArc",
    -command => sub{ arc(); },
)->pack(-side => 'left');

my $schalter2 = $mw->Button(
    -text => "createLine",
    -command => sub{ line(); },
)->pack(-side=> 'left');

my $schalter3 = $mw->Button(
    -text => "createOval",
    -command => sub{ oval(); },
)->pack(-side=> 'left');

my $schalter4 = $mw->Button(
    -text => "createRectangle",
    -command => sub{ rect(); },
)->pack(-side=> 'left');

my $schalter5 = $mw->Button(
    -text => "createText",
    -command => sub{ text(); },
)->pack(-side=> 'left');

my $schalter6 = $mw->Button(
    -text=>"Beenden",
    -command => sub{ $mw->destroy(); },
)->pack(-side => 'left');

$mw->MainLoop();

sub arc{
  $c1->createArc(25, 100, 150, 300, -fill => 'blue');
}

sub  line{
   $c1->createLine(25, 25, 325, 325, -fill => 'red');
}

sub oval{
  $c1->createOval(35, 25, 100,100, -fill => 'yellow');
}

sub rect{
  $c1->createRectangle(150, 150, 300, 300, -fill => 'green');
}

sub text{
   $c1->createText(175, 10, -text => 'Diese ist ein Textbeispiel');
}

So sieht das Ergebnis aus:

tk20.png

Mehr zum Fensterelement Canvas finden Sie auf der Widget-Seite zur Canvas.

Top