Tk::MainWindow - das Hauptfenster

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]");
}
Top