ein Kapitel zurück                                           ein Kapitel weiter

Die Ausgabe in dem Kapitel zuvor hätten wir ja schon gerne auf ein Fenster ausgegeben, anstatt auf der Konsole. Mehr oder ein neues Fenster außer dem MainWindow können sie mit Toplevel erzeugen.

#!/usr/bin/perl -w

use strict;
use Tk;

my $main = MainWindow->new;

my $child=$main->Toplevel;

MainLoop;


Wenn sie das Programm übersetzen werden sie 2 Fenster auf dem Bildschirm haben. Beachten sie bitte auch das wenn sie zuerst das Hauptfenster (MainWindow) schließen, wird Automatisch auch das andere Fenster geschlossen. Das neu erzeugte Fenster $child ist somit nur ein Abkömmling von dem Hauptfenster und kann ohne diesem nicht existieren. Jetzt wollen wir das in unser Programm vom Kapitel zuvor einbauen...........

#!/usr/bin/perl -w

use strict;
use Tk;

my $fenster = MainWindow->new;

my $text=$fenster->Label("-text" => "Bitte geben sie Ihren Namen ein  : ",
                         "-height" => "5",
                         "-width"  => "40");

my $eingabe = $fenster->Entry();

my $schalter = $fenster->Button("-text" => "OK",
                                "-height" => "1",
                                "-width"  => "4",
                                "-command" =>  \&eingabe_bearbeiten);

my $schalter2 = $fenster->Button("-text" => "Ende",
                                 "-height" => "1",
                                 "-width"  => "4",
                                 "-command" => sub {exit 0});

$text->pack();
$eingabe->pack();
$schalter->pack();
$schalter2->pack();

MainLoop;

sub eingabe_bearbeiten {
  my $popup = $fenster->Toplevel;
  $popup->Label("-text" => "Hallo " . $eingabe->get )->pack;
  $popup->Button("-text" => "close",
                 "-command" => [ $popup => "destroy"])->pack;
  $eingabe->delete(0,100); #Löscht den Inhalt von Entry() ab Zeichen 0-100
}


So siehts aus :

   



So jetzt haben wir eine reine 'fensterorientierte' Anwendung. Die Option......

 "-command" => [ $popup => "destroy"]       

....mussten wir diesmal direkt auf ein Fenster beziehen da sonst wie wir es bisher gemacht haben mit sub {exit 0} das gesamte Programm beendet würde. Jetzt haben wir schon einrichtiges Interaktives Programm erstellt.

Mehr dazu unter: man Tk::Toplevel

ein Kapitel zurück          nach oben           ein Kapitel weiter


© 2001,2002 Jürgen Wolf