首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >捕获wxperl中的关键事件

捕获wxperl中的关键事件
EN

Stack Overflow用户
提问于 2020-05-14 17:40:51
回答 1查看 50关注 0票数 1

我想在一个wxperl应用程序中捕捉顶层的按键。从文档来看,似乎应该使用EVT_CHAR EVT_CHAR_HOOK EVT_KEY_DOWN之一。

在下面的代码中,EVT_LEFT_DOWN可以工作,但是EVT_KEY_DOWN (或任何替代方案)不能工作。

有人知道该怎么做吗?OS,顺便说一下。

代码语言:javascript
复制
use warnings;
use strict;
use Wx;

package MyApp;
use base 'Wx::App';
use Wx::Event
    qw(EVT_LEFT_DOWN EVT_CHAR EVT_CHAR_HOOK EVT_KEY_DOWN);

sub OnInit {
    my( $self ) = @_;

    my $frame = Wx::Frame->new(
        undef,
        -1,
        'Hello World',
        [-1, -1],
        [250, 150],
    );

    EVT_KEY_DOWN( $frame, \&on_event ); # doesn't work
    # EVT_LEFT_DOWN( $frame, \&on_event ); # works
    $frame->Show( 1 );
    return 1;
}

sub on_event {
    print "peekaboo\n";
}

package main;

my $app = MyApp->new;
$app->MainLoop;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-14 20:47:35

如果窗口有焦点(这有点同义,但根据定义,键盘事件只发送到焦点窗口),这应该有效。在Mac下,如果您不是从一个适当的(Mac)包中运行程序,那么在刚开始的时候,框架没有焦点可能会出现问题,但是单击它仍然会使它具有焦点。如果这仍然不起作用,请尝试创建一个wxPanel作为框架的子元素,并绑定到它上的事件。

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

https://stackoverflow.com/questions/61803886

复制
相关文章

相似问题

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