3. Teil WxPerl Sizer

Joachim on 15.3.2016

Sizer sind sehr mächtig, aber manchmal nicht intuitiv. Diese Doku soll ein kleiner Einstieg sein! Wir konzentrieren uns hier auf den BoxSizer, weil er am flexibelsten ist und am häufigsten verwendet wird.

Als Grundlage nutzte ich die Tutorials von Herbert Breunung ( http://lichtkind.de/) aus dem Perl-Magazin $foo. Dieses Magazin wird leider nicht mehr vertrieben.

Sizer sind sehr mächtig, aber manchmal nicht intuitiv. Diese Doku soll ein kleiner Einstieg sein! Wir konzentrieren uns hier auf den BoxSizer, weil er am flexibelsten ist und am häufigsten verwendet wird. Einfaches Beispiel wxBoxSizer:

my $knopf 	= Wx::Button->new( $panel,
 -1,
 'MessageBox ');
my $knopf1 	= Wx::Button->new( $panel,
 -1,
 'MessageBox ');
my $knopf2 	= Wx::Button->new( $panel,
 -1,
 'Wx::FileSelector');
my $knopf3 	= Wx::Button->new( $panel,
 -1,
 'Wx::DirSelector');
# Definition Sizer
my $sizer = Wx::BoxSizer->new(wxVERTICAL);
$sizer->Add($knopf,
  0,
 0,
 0);
$sizer->Add($knopf1,
 0,
 0,
 0);
$sizer->Add($knopf2,
 0,
 0,
 0);
$sizer->Add($knopf3,
 0,
 0,
 0);
$panel->SetSizer($sizer);
$panel->Layout();

Sizer_1

Die 4 Parameter vom Sizer:

1. Parameter - Referenz auf das Widget

Hier in unserem Beispiel die einzelnen Button's.

2. Parameter - Proportion

Der zweite Parameter gibt an, in welchem Verhältnis sich die Widgets den zusätzlich verfügbaren Platz aufteilen. Das gilt aber nur für die Richtung waagerecht oder senkrecht. Ist zum Beispiel bei einem Widget der Parameter auf 2 gesetzt bei dem anderen auf , so teilen sie sich den Platz im Verhältnis 2:3.

# Definition Sizer
my $sizer = Wx::BoxSizer->new(wxVERTICAL);
$sizer->Add($knopf,
  1,
 0,
 0);
$sizer->Add($knopf1,
 1,
 0,
 0);
$sizer->Add($knopf2,
 2,
 0,
 0);
$sizer->Add($knopf3,
 1,
 0,
 0);
$panel->SetSizer($sizer);

Sizer2

3. Parameter Style

Betroffen sind hier die Ausrichtung, Ränder und Wachstum. Die Konstantennamen wxALIGN_LEFT, wxALIGN_RIGHT, wxALIGN_TOP, wxALIGN_BOTTOM, wxALIGN_CENTER_VERTICAL und wxALIGN_HORIZONTAL bzw. wxALIGN_CENTER fasst die letzten beiden zusammen. Ebenso sind folgende Konstanten selbsterklärend wxLEFT, wxRIGHT, wxTOP, wxBOTTOM oder zusammenfassend wxALL, sie geben die Richtung an, in der der Sizer dem Widget zusätzlichen Rand gibt.

my $sizer = Wx::BoxSizer->new(wxVERTICAL);
$sizer->Add($knopf,
  1,
 0,
 0);
$sizer->Add($knopf1,
 1,
 0,
 0);
$sizer->Add($knopf2,
 2,
 wxALIGN_RIGHT,
 0);
$sizer->Add($knopf3,
 1,
 wxALIGN_CENTER,
 0);
$panel->SetSizer($sizer);

Sizer_3

4. Parameter Border

Der vierte Parameter besagt wie groß dieser Rand ist (siehe Para. 3 wxLEFT usw.). Weiterhin gibt es noch die Stylekonstanten wxGROW und wxSHAPED. Mit ersterer oder auch wxEXPAND bekommt das Widget allen erhältlichen Platz.

my $sizer = Wx::BoxSizer->new(wxVERTICAL);
$sizer->Add($knopf,
  1,
 wxALL,
 20);
$sizer->Add($knopf1,
 1,
 wxLEFT,
 20);
$sizer->Add($knopf2,
 2,
 wxALIGN_RIGHT,
 0);
$sizer->Add($knopf3,
 1,
 wxALIGN_CENTER,
 0);
$panel->SetSizer($sizer);

Sizer_4

Mit

$sizer->AddSpacer( $px );

oder

$sizer->InsertSpacer( $pos,
 $px );

können auch zusätzliche Ränder eingefügt werden.

my $sizer = Wx::BoxSizer->new(wxVERTICAL);
$sizer->AddSpacer(20);
$sizer->Add($knopf,
  1,
 wxLEFT|wxRIGHT|wxEXPAND,
 20);
$sizer->Add($knopf1,
 1,
 wxLEFT|wxRIGHT|wxEXPAND,
 20);
$sizer->Add($knopf2,
 1,
 wxLEFT|wxRIGHT|wxEXPAND,
 20);
$sizer->Add($knopf3,
 1,
 wxLEFT|wxRIGHT|wxEXPAND,
 20);
$sizer->AddSpacer(20);
$panel->SetSizer($sizer);

Sizer_5

2.Teil: WxPerl Dialoge und Events

Perl-Skripte mit grafischer Oberfläche mit WxPerl  

Zurück