2011-10-11 2 views
1

찾을 수있는 매우 희소 한 wxPerl 문서에서 지원되는지와 충분히 확실하다고 말하면서 그 인스턴스를 만들 수 있습니다.누구나 Wx Perl에서 Wx :: GridBagSizer 레이아웃 관리자를 사용 했습니까?

my $layout = new Wx::GridBagSizer(5,5); 

하지만 제대로 작동하지 않습니다. 특히, $ layout에 위젯을 추가 할 수 없습니다. 누구든지이 짓을 했니?

나는 주제에 대해 wxPerl에 대한 문서를 찾았습니까?

답변

2

먼저 모든 클래스의 예제를 보려면 Wx::Demo을 확인하십시오.

Add method을 사용하여 위젯을 추가해야합니다.

$sizer->Add($widget, Wx::GBPosition->new($row, $col)); 

과 어쩌면

$sizer->Add($widget, [ $row, $col ]); 
+0

고맙습니다. 이것은 나를 올바른 방향으로 향하게했다. Wx :: GridBagSizer가 Wx :: Demo에서 명시 적으로 다루지 않았기 때문에이를 참조하고자하는 사람들을 위해 아래 긴 솔루션 게시. 시행 착오를했다. BTW ... Wx :: Demo는 사실 도움이되었습니다. 다시 한번 감사드립니다. – Rodney

2

이케 날 올바른 방향으로 가고 있어요. Wx :: Demo는 PerlTk의 위젯과 같이 매우 유용합니다. 그러나 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; 
}