package Frame; use strict; use warnings; use Wx qw[:everything]; use base qw(Wx::Frame); sub new { my $self = shift; $self = $self->SUPER::new( undef, -1, 'Test app', [-1, -1], [-1, -1], wxDEFAULT_FRAME_STYLE, ); #- Grid Sizer my $sizer = Wx::GridSizer->new(2, 1); my $text = Wx::TextCtrl->new( $self, -1, q{Hello}, [ -1, -1 ], [ -1, 40 ], wxTE_MULTILINE, ); my $button = Wx::Button->new( $self, -1, '&Color',[ 70, 30 ] ); my $hbox = Wx::BoxSizer->new(wxHORIZONTAL); Wx::Event::EVT_BUTTON( $self, $button, sub { $text->SetForegroundColour( Wx::Colour->new(255,0,0) ); $text->SetBackgroundColour( Wx::Colour->new('yellow') ); } ); $sizer->Add( $text, 0, wxALIGN_CENTRE | wxGROW | wxALL, 2, ); $sizer->Add( $button, 0, wxALIGN_CENTRE | wxGROW | wxALL, 2, ); $self->SetSizer( $sizer ); $sizer->Fit($self); return $self; } 1; package App; use strict; use warnings; use base 'Wx::App'; sub OnInit { my $frame = Frame->new(); $frame->Show( 1 ); } package main; use strict; use warnings; my $app = App->new(); $app->MainLoop;