我所能找到的非常稀疏的wxPerl文档说它是受支持的,当然,我可以创建它的一个实例。
my $layout = new Wx::GridBagSizer(5,5);
但是我不能使它工作。具体来说,我不能向$layout添加小部件。有人做过吗?
当我在这个主题上,有人发现任何好的wxPerl文档吗?
首先,检查Wx::Demo以获取几乎每个类的示例。
您应该使用它的Add
方法添加小部件。
$sizer->Add($widget, Wx::GBPosition->new($row, $col));
和
$sizer->Add($widget, [ $row, $col ]);
ikegami让我走上了正确的方向。Demo非常有帮助(就像PerlTk的widget,如果有人熟悉这个工具的话)。但是Wx::GridBagSizer并没有被明确地讨论,所以我们花了一些尝试和错误才最终到达那里。下面是我要做的:
sub new
{
my( $class, $parent ) = @_;
my $self = $class->SUPER::new
(
undef,
-1,
"Wx::GridBagSizer",
wxDefaultPosition, wxDefaultSize,
wxDEFAULT_FRAME_STYLE|wxRESIZE_BORDER|wxMAXIMIZE_BOX
);
my $Grid = Wx::GridBagSizer->new(1,1);
$Grid->Add(Wx::Button->new($self, -1, 'Button 1'), Wx::GBPosition->new(0, 0), Wx::GBSpan->new(1, 1), wxGROW|wxALL, 1);
$Grid->Add(Wx::Button->new($self, -1, 'Button 2'), Wx::GBPosition->new(0, 1), Wx::GBSpan->new(1, 1), wxGROW|wxALL, 1);
$Grid->Add(Wx::Button->new($self, -1, 'Button 3'), Wx::GBPosition->new(1, 0), Wx::GBSpan->new(1, 2), wxGROW|wxALL, 1);
$Grid->Add(Wx::Button->new($self, -1, 'Button 4'), Wx::GBPosition->new(2, 0), Wx::GBSpan->new(2, 1), wxGROW|wxALL, 1);
$Grid->Add(Wx::Button->new($self, -1, 'Button 5'), Wx::GBPosition->new(2, 1), Wx::GBSpan->new(1, 1), wxGROW|wxALL, 1);
$Grid->Add(Wx::Button->new($self, -1, 'Button 6'), Wx::GBPosition->new(3, 1), Wx::GBSpan->new(1, 1), wxGROW|wxALL, 1);
$Grid->AddGrowableRow(1);
$Grid->AddGrowableCol(1);
$self->SetAutoLayout( 1 );
$self->SetSizer( $Grid );
$self->CenterOnScreen(wxBOTH);
return $self;
}