use strict; use warnings; use Wx; package WizTest; use base qw(Wx::App); # Inherit from Wx::App use Wx::Event qw(EVT_WIZARD_FINISHED); sub OnInit { my $self = shift; my $wizard = Wx::Wizard->new( undef, -1, "Wizard test" ); # first page my $page1 = Wx::WizardPageSimple->new( $wizard ); Wx::TextCtrl->new( $page1, -1, "First page" ); # second page my $page2 = Wx::WizardPageSimple->new( $wizard ); Wx::TextCtrl->new( $page2, -1, "Second page" ); Wx::WizardPageSimple::Chain( $page1, $page2 ); EVT_WIZARD_FINISHED( $self, $wizard, sub { warn "Wizard finished\n"; } ); # Preempt everything and run the wizard now. # $wizard->RunWizard( $page1 ); $self->{wizard} = $wizard; $self->{start_page} = $page1; } package main; my $app = WizTest->new(); # New HelloWorld application # Note that I don't start the MainLoop $app->{wizard}->RunWizard( $app->{start_page} );