Sehr Umfangreiche Webseite zum Programmieren in C Perl CGI, Skripting, Linux, SystemprogrammierungPerl Perl Kurs Skripting Tk-Modul use Tk; Tcl/Tk Toplevel Tk Toplevel Steuerelement Perl Skript Tk-Modul Tk use Tk Perl mit dem Tk-Modul Teil 5

Steuerelement Toplevel          zurück zum Inhaltsverzeichnis

Die Ausgabe im Kapitel zuvor hätten Sie 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 sehen. Beachten Sie bitte auch, dass 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 (Kind) von dem Hauptfenster (Eltern)  und kann ohne diesen nicht existieren. Das Ganze wieder in der Praxis ...

#!/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 (Linux/Unix):

Steuerelement Toplevel Linux/Unix Steuerelement Toplevel Linux/Unix

So siehts aus (MS Windows):

Steuerelement Toplevel MS Windows Steuerelement Toplevel MS Windows

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

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

... mussten Sie diesmal direkt auf ein Fenster beziehen, da sonst wie Sie es bisher gemacht haben mit sub {exit 0} das gesamte Programm beendet würde. 

Mehr dazu unter: man Tk::Toplevel