如何在不将小部件放在父部件的情况下创建小部件?
下面是一个很小的例子。
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;这会产生

我只想要什么是放置在sizer (按钮1)显示。
发布于 2020-05-17 15:42:34
您可以通过调用$thing->Show(0)来隐藏事情。我补充说:
$btn2->Show(0);布局仍然很有趣,因为小部件的空间仍然存在--只是看不见而已。所以,它仍然是“放置”的。也许您想要在其他地方创建控件,您可以自行调整其大小。
您必须在调用Layout之前隐藏这个小部件。
请参阅使用Sizers隐藏控件
发布于 2020-05-17 15:37:27
默认情况下,所有非顶层窗口都会被创建.如果你不想他们出现在屏幕上,你需要隐藏他们。最好的方法是在实际创建真正的窗口之前隐藏它们,在C++中可以通过创建窗口而不给它任何参数来实现,然后用通常在创建窗口时使用的相同参数调用Create()。
我不确定这是否是在wxPerl中暴露的。如果是这样的话
my $btn2 = Wx::Button->new();
$btn2->Hide(); # or $btn2->Show(false)
$btn2->Create($frame, -1, '2' );应起作用;
如果没有,您仍然可以隐藏它,如果您在显示框架之前就这样做了,它仍然不会对用户可见。
https://stackoverflow.com/questions/61850790
复制相似问题