在“创建”按钮中获取错误,其中包含使用 perl 语言的事件和消息框



我是perl编程的新手。我正在尝试使用 Perl 语言构建一个带有事件和消息框的按钮。此按钮调用事件和凸轮消息框。我使用 Padre Perl IDE 来完成此任务。运行后,出现了错误。

错误:

错误变量不是第 37 行05_button_with_event_and_message_box.pl处的 Wx::P oint 类型。

你能帮我解决这个问题吗?

我的Perl代码

#!/usr/bin/perl
package main;
use 5.008;
use strict;
use warnings;
$| = 1;
my $app = Demo::App->new;
$app->MainLoop;
package Demo::App;
use strict;
use warnings;
use base 'Wx::App';
our $frame;
sub OnInit {
    $frame = Demo::App::Frame->new;
    $frame->Show(1);
}
package Demo::App::Frame;
use strict;
use warnings;
use Wx qw(:everything);
use base 'Wx::Frame';
sub new {
    my ($class) = @_;
    my $self = $class->SUPER::new(
        undef, -1,
        wxDefaultPosition, wxDefaultSize, );
    my $button = Wx::Button->new( $self, -1, "What is this smell?" );
    Wx::Event::EVT_BUTTON(
        $self, $button,
        sub {
            my ( $self, $event ) = @_;
            print "printing to STDOUTn";
            print STDERR "printing to STDERRn";
            Wx::MessageBox( "This is the smell of an Onion", "Title", wxOK | wxCENTRE, $self );
    }
    );
    $self->SetSize( $button->GetSizeWH );
    Wx::Event::EVT_CLOSE(
        $self,
        sub {
            my ( $self, $event ) = @_;
            $event->Skip;
        }
    );
    return $self;
}

你能帮我解决这个问题吗?感谢任何观众。

似乎您忘记在调用中提供窗口标题参数 Wx::Frame->new()

试试这个:

my $self = $class->SUPER::new(
    undef, -1, "My title",
    wxDefaultPosition, wxDefaultSize, );

我以前没有使用过wxWidgets。我能够安装wxPerl现在在 Ubuntu 16.10 上使用以下命令:

sudo apt-get install libssl-dev
sudo apt-get install gtk2.0
sudo apt-get install build-essential libgtk2.0-dev
sudo apt-get install libwx-scintilla-perl
cpanm Wx::App