Wxperl创建小部件,但不要放置它

问题描述 投票:1回答:1

如何在不将其放置在其父对象上的情况下创建它?

这是一个最小的例子。

package MyApp;
use strict;
use warnings;
use Wx;
use base 'Wx::App';

sub OnInit {
    my ($self) = @_;
    my $frame
        = Wx::Frame->new( undef, -1, 'Test', [ -1, -1 ], [ 250, 150 ], );
    my $sizer = Wx::GridBagSizer->new( 0, 0 );

    my $btn1 = Wx::Button->new( $frame, -1, '1' );
    my $btn2 = Wx::Button->new( $frame, -1, '2' );

    $sizer->Add( $btn1, Wx::GBPosition->new( 2, 2 ) );
    $frame->SetSizer($sizer);
    $frame->Show(1);
    1;
}

package main;
MyApp->new->MainLoop;

此产量

enter image description here

我只希望显示尺寸调整器(按钮1)中的内容。

perl wxwidgets wxperl
1个回答
0
投票

默认创建所有非顶级窗口。如果您不希望它们出现在屏幕上,则需要隐藏它们。最好的方法是将它们隐藏在[[before中,以实际创建真实的窗口,这可以在C ++中实现,方法是创建窗口而不给它任何参数,然后使用通常使用的相同参数调用Create()创建它时。

我不确定这是否在wxPerl中公开。如果是这样的话]

my $btn2 = Wx::Button->new(); $btn2->Hide(); # or $btn2->Show(false) $btn2->Create($frame, -1, '2' );

应该工作;

如果没有,您仍然可以隐藏它,并且如果在显示框架之前进行了操作,则用户仍然看不到它。

© www.soinside.com 2019 - 2024. All rights reserved.