Das Tk::MainWindow ist das Hauptfenster einer jeden Perl/Tk-Applikation. Vom MainWindow sind alle anderen Widgets angeleitet, d.h. sie sind untergeordnet.
Ein Perl/Tk-Hauptfenster kann übrigens auch mit einer Kurzschreibweise instanziiert werden. der Aufruf von my $mw = tkinit();
ist äquivalent zu my $mw = Tk::MainWindow->new;
(vgl. Mastering Perl/Tk: Graphical User Interfaces in Perl, Kapitel 14.3.9. Mega-Widget Instance Variables).
Nachfolgender Code zeigt, wie das MainWindow beim Start der Anwendung zentriert werden kann:
#!perl
use strict;
use warnings;
use Tk;
# Basiert auf Quelle: http://www.perl-community.de/bat/poard/thread/4664
# abgerufen: 2003-10-05
my $mw = Tk::MainWindow->new( -width => 200, -height => 200, );
$mw->packPropagate(0);
zentriere_fenster($mw);
$mw->MainLoop();
####### hier die SUB nochmal ohne Inline DOKU ########
sub zentriere_fenster {
my $widget = shift;
my $x_ver = shift || 0;
my $y_ver = shift || 0;
my ( $breite, $hoehe ) = undef;
$widget->update;
my $tats_breite = $widget->width();
my $tats_hoehe = $widget->height();
my @aktuelle_b_aufloesung =
( $breite = $mw->screenwidth, $hoehe = $mw->screenheight );
my @widget_platzierung = (
( $aktuelle_b_aufloesung[0] / 2 ) - ( $tats_breite / 2 ) + $x_ver,
( $aktuelle_b_aufloesung[1] / 2 ) - ( $tats_hoehe / 2 ) + $y_ver
);
for (@widget_platzierung) {
$_ = sprintf( "%.0f", $_ );
}
$widget->geometry("+$widget_platzierung[0]+$widget_platzierung[1]");
}