Here's my entire script (after a few more tweaks). It's only displaying the button, without any static box around it.
#!perl
use strict;
use warnings;
use Wx;
package my_control;
use base 'Wx::Control';
use Wx qw(:sizer :misc :id);
use Wx::Event qw(EVT_BUTTON);
sub new {
my $ref = shift;
my $parent = shift;
my $self = $ref->SUPER::new($parent, wxID_ANY, wxDefaultPosition,
+wxDefaultSize);
$self->{sizer} = Wx::StaticBoxSizer->new(
Wx::StaticBox->new($self, -1, 'Box label'),
wxHORIZONTAL
);
$self->{button} = Wx::Button->new($self, -1, 'Button');
$self->{sizer}->Add($self->{button}, 1, wxEXPAND | wxALL, 10);
EVT_BUTTON($self, $self->{button}, \&click);
$self->SetSizerAndFit($self->{sizer});
return $self;
}
sub click { Wx::MessageBox('Click!'); }
package my_frame;
use base 'Wx::Frame';
use Wx qw(:sizer);
sub new {
my $ref = shift;
my $self = $ref->SUPER::new(undef, -1, 'Title', [-1, -1], [150,150
+]);
my $panel = Wx::Panel->new($self, -1);
my $sizer = Wx::BoxSizer->new(wxVERTICAL);
my $control = my_control->new($panel);
$sizer->Add($control, 1, wxEXPAND);
$panel->SetSizerAndFit($sizer);
return $self;
}
package my_app;
use base 'Wx::App';
sub OnInit { my_frame->new()->Show(1); }
package main;
my_app->new()->MainLoop;
(The event is working now, by the way.) Thanks a lot for your help. |