Кто-нибудь использовал менеджер разметки Wx :: GridBagSizer в Wx Perl? - PullRequest
1 голос
/ 12 октября 2011

Очень редкая документация по wxPerl, которую мне удалось найти, говорит, что она поддерживается и, конечно же, я могу создать ее экземпляр.

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

Но я не могу заставить его работать.В частности, я не могу добавить виджет в $ layout.Кто-нибудь делал это?

А пока я на эту тему, кто-нибудь нашел ХОРОШУЮ документацию для wxPerl?

Ответы [ 2 ]

2 голосов
/ 13 октября 2011

Икегами заставил меня идти в правильном направлении. 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;
}
2 голосов
/ 12 октября 2011

Во-первых, проверьте Wx :: Demo для примеров почти каждого класса.

Вы должны добавить виджеты, используя Add метод .

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

и, возможно,

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