我是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