use strict; use warnings; use warnings qw< FATAL utf8 >; use Wx; use 5.014; use utf8; use autodie; use Carp; use Carp qw {cluck}; use Carp::Always; use Win32::Console; use English '-no_match_vars'; package MyForm; # ------------------------------------------------------------------ package MyForm:: use strict; use warnings; use Wx qw[:everything]; # easy when testing use Wx::Event qw(EVT_BUTTON EVT_LIST_CACHE_HINT EVT_CLOSE EVT_SIZE EVT_MENU EVT_COMBOBOX EVT_UPDATE_UI EVT_TOOL_ENTER); use parent -norequire, 'Wx::Frame'; use Wx qw(:id :toolbar :statictext wxNullBitmap wxDefaultPosition wxDefaultSize wxNullBitmap wxTB_VERTICAL wxSIZE wxTE_MULTILINE wxBITMAP_TYPE_BMP); sub new { #1 --------------------------- new MyForm:: my $class = shift; my $self = $class->SUPER::new( undef, -1, # parent window; ID -1 means any 'Well-behaved widgets', # title wxDefaultPosition, wxDefaultSize, ); my ( $label1, $label2, $label3, $utext1, $utext2, $utext3, $sizer1, $sizer2, $sizer3, $sizer_main); my $panel = Wx::Panel->new( # Add a panel so it looks correct on all platforms $self, -1, # parent window, ID wxDefaultPosition, wxDefaultSize); $panel->SetBackgroundColour(Wx::Colour->new('light blue')); $label1 = Wx::StaticText->new($panel, -1, 'Label 1', [150, 250], wxDefaultSize, wxALIGN_CENTER); $label2 = Wx::StaticText->new($panel, -1, 'Label 2', [150, 250], wxDefaultSize, wxALIGN_CENTER); $label3 = Wx::StaticText->new($panel, -1, 'Label 3', [150, 250], wxDefaultSize, wxALIGN_CENTER); my @labels = ($label1, $label2, $label3); my $font = Wx::Font->new(13, -1, wxNORMAL, wxBOLD, 0, 'times new roman'); foreach (@labels) {$_->SetFont($font)}; my $btn1 = Wx::Button->new( $panel, -1, 'Button 1', wxDefaultPosition, wxDefaultSize, ); my $btn2 = Wx::Button->new( $panel, -1, 'Button 2', wxDefaultPosition, wxDefaultSize, ); my $btn3 = Wx::Button->new( $panel, -1, 'Button 3', wxDefaultPosition, wxDefaultSize, ); $utext1 = Wx::TextCtrl->new($panel, -1, q{utext1} ); $utext2 = Wx::TextCtrl->new($panel, -1, q{utext2} ); $utext3 = Wx::TextCtrl->new($panel, -1, q{utext3} ); $sizer_main = Wx::BoxSizer->new(wxVERTICAL); $sizer1 = Wx::BoxSizer->new(wxHORIZONTAL); $sizer2 = Wx::BoxSizer->new(wxHORIZONTAL); $sizer3 = Wx::BoxSizer->new(wxHORIZONTAL); $sizer1 -> Add ( $btn1, 0, wxALL, 5 ); $sizer1 -> Add ( $label1, 0, wxALL, 5 ); $sizer1 -> Add ( $utext1, 0, wxALL, 5 ); $sizer2 -> Add ( $label2, 0); $sizer2 -> Add ( $utext2, 0, wxALL | wxEXPAND, 10); $sizer2 -> Add ( $btn2, 0, wxALL | wxEXPAND, 5); $sizer3 -> Add ( $utext3, 0); $sizer3 -> Add ( $btn3, 0, wxALL | wxEXPAND, 10); $sizer3 -> Add ( $label3, 0, wxALL | wxEXPAND, 5); $sizer_main->Add( $sizer1, 1, wxALL | wxEXPAND, 5 ); $sizer_main->Add( $sizer2, 1, wxALL | wxEXPAND, 5 ); $sizer_main->Add( $sizer3, 1, wxEXPAND); $panel->SetSizer($sizer_main); $sizer_main->Fit($self); $sizer_main->SetSizeHints($self); $panel->Fit; return $self; } #1 end sub new MyForm:: 1; # end package MyForm package main; # --------------------------------------------------------------------- package main:: use strict; use warnings; use 5.014; use utf8; use autodie; use Carp; use Carp qw {cluck}; use Carp::Always; use Win32::Console; use English '-no_match_vars'; binmode(STDOUT, ':unix:utf8'); binmode $DB::OUT, ':unix:utf8' if $DB::OUT; # for the debugger Win32::Console::OutputCP(65001); # Set the console code page to UTF8 my $app = Wx::SimpleApp->new; my $frame = MyForm->new; $frame->Show(1); $app->MainLoop; 1;