1

私が見つけた非常にまばらなwxPerlのドキュメントには、サポートされていると書かれており、確かに、そのインスタンスを作成できます。

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

しかし、私はそれを機能させることはできません。具体的には、ウィジェットを$layoutに追加できません。誰かこれをしましたか?

そして、私がこのテーマに取り組んでいる間、誰かがwxPerlの良いドキュメントを見つけましたか?

4

2 に答える 2

2

まず、ほぼすべてのクラスの例について、Wx::Demoをチェックアウトします。

Addそのメソッドを使用してウィジェットを追加する必要があります。

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

そして多分

$sizer->Add($widget, [ $row, $col ]);
于 2011-10-11T22:07:24.053 に答える
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;
}
于 2011-10-12T21:19:37.467 に答える