首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wxperl创建小部件,但不要放置

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

Stack Overflow用户
提问于 2020-05-17 11:09:07
回答 2查看 65关注 0票数 2

如何在不将小部件放在父部件的情况下创建小部件?

下面是一个很小的例子。

代码语言:javascript
复制
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)显示。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-05-17 15:42:34

您可以通过调用$thing->Show(0)来隐藏事情。我补充说:

代码语言:javascript
复制
 $btn2->Show(0);

布局仍然很有趣,因为小部件的空间仍然存在--只是看不见而已。所以,它仍然是“放置”的。也许您想要在其他地方创建控件,您可以自行调整其大小。

您必须在调用Layout之前隐藏这个小部件。

请参阅使用Sizers隐藏控件

票数 2
EN

Stack Overflow用户

发布于 2020-05-17 15:37:27

默认情况下,所有非顶层窗口都会被创建.如果你不想他们出现在屏幕上,你需要隐藏他们。最好的方法是在实际创建真正的窗口之前隐藏它们,在C++中可以通过创建窗口而不给它任何参数来实现,然后用通常在创建窗口时使用的相同参数调用Create()

我不确定这是否是在wxPerl中暴露的。如果是这样的话

代码语言:javascript
复制
    my $btn2 = Wx::Button->new();
    $btn2->Hide(); # or $btn2->Show(false)
    $btn2->Create($frame, -1, '2' );

应起作用;

如果没有,您仍然可以隐藏它,如果您在显示框架之前就这样做了,它仍然不会对用户可见。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61850790

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档