Felhasználói eszközök

Eszközök a webhelyen


oktatas:programozas:perl:wxperl:wxperl_tananyag

< wxPerl

wxPerl tananyag

  • Szerző: Sallai András
  • Copyright © Sallai András, 2011, 2012, 2015
  • Licenc: GNU Free Documentation License 1.3

A wxPerl

A wxPerl a Perl egy telepíthető modulja, amelyet Mattia Barbon fejleszt. A wxPerl lehetővé teszi a wxWidgets GUI eszközkészlet használatát Perl programban.

A wxWidgets GUI felületek létrehozására, könnyen használható komponensgyűjtemény. Eredetileg C++-ra kitalálva, több platformos megoldásként (Windows/Unix/Mac).

Első program

MyApp.pl
#!perl -w
use Wx;
use utf8;
 
package MyApp;
 
use base 'Wx::App';
 
sub OnInit {
 
	my $frame = Wx::Frame->new( undef, # Szülő ablak
		        -1,		# ID -1 azt jelenti bármi (any)
			'wxPerl ablak', # cím
			[-1, -1],       # alapértelmezett pozíció
			[250, 150],     # méret
			);
	$frame->Show(1);
}
 
 
package main;
my $app = MyApp->new();
$app->MainLoop();

Egy gomb megjelenítése

prog01.pl
use Wx;
use utf8;
 
package MyFrame;
 
use base 'Wx::Frame';
sub new 
{
	my $ref = shift;
	my $self = $ref->SUPER::new(@_); # a superosztály konstruktorának hívása
 
	# A komponensek nem hozhatók létre a kereten belül közvetlenül
	# A keretre egy WX::Panel komponenst helyezünk
	my $panel = Wx::Panel->new( $self,              # szülő
                                -1,                     # azonosító
                                );
	# create a button
	$self->{btn} = Wx::Button->new( $panel,         # parent window
                                        -1,             # ID
                                     'Kattints ide',    # label
                                        [30, 20],       # position
                                        [-1, -1],       # default size
				);
	return $self
}
 
package MyApp;
 
use base 'Wx::App';
 
sub OnInit {
	my $self = shift;    # Definiáljuk a $self változót, mert itt is szeretnénk használni
	my $frame = MyFrame->new( undef,	# szülő
	                        -1,		#ablak azonosító
				'Gomb példa', 	# felirat
				[1,1],		# pozíció
				[200,150]	# méret
					);
	$self->SetTopWindow($frame); 		# Toplevel ablak definiálása
	$frame->Show( 1 );			# Frame megjelenítése
}
 
package main;
 
my $app = MyApp->new(); 	# Új MyApp alkalmazás
$app->MainLoop;			# Eseményhurok

Esemény kezelése

use Wx;
use utf8;
 
package MyFrame;
 
use Wx::Event 'EVT_BUTTON';   
use base 'Wx::Frame';
sub new 
{
	my $ref = shift;
	my $self = $ref->SUPER::new(@_); # a superoszztály konstruktorának hívása
 
	# A komponensek nem hozhatók létre a kereten belül közvetlenül
	# A keretre egy WX::Panel komponenst helyezünk
	my $panel = Wx::Panel->new( $self,            # szülő
                                    -1,               # azonosító
                                   );
	$self->{txt} = Wx::StaticText->new( $panel, 	#szülő
					1, 		# azonosító
					"Esemény példa",# címke
					[50, 15]	# pozíció
					);
	my $BTNID = 1;  #gombazonosító rögzítése a $BTNID-ban
	# gomb létrehozása
	$self->{btn} = Wx::Button->new( $panel,   # szülő
                                  $BTNID,         # azonosító
                                  'Kattints ide', # címke
                                  [50, 50],       # pozíció
                                  [-1, -1],       # alapértelmezett (default) méret
								);
	EVT_BUTTON($self,  # az objektum kötése ...
		$BTNID,		# Gombazonosító
		\&GombClicked	# Ez fut le a gombnyomásra
		);
	return $self
}
 
sub GombClicked
{
	my ($self, $event) = @_;
	# A szöveg lecserélése
	$self->{txt}->SetLabel("A gomb le lett nyomva");
}
 
package MyApp;
 
use base 'Wx::App';
 
sub OnInit {
	my $self = shift;    # Definiáljuk a $self változót, mert itt is szeretnénk használni
	my $frame = MyFrame->new( undef,	# szülő
	                          -1,		#ablak azonosító
				  'Gomb példa', # felirat
				  [1,1],	# pozíció
				  [200,150]	# méret
				);
	$self->SetTopWindow($frame);		# Toplevel ablak definiálása
	$frame->Show( 1 );			# Frame megjelenítése
}
 
package main;
 
my $app = MyApp->new(); 	# Új MyApp alkalmazás
$app->MainLoop;			# Eseményhurok
oktatas/programozas/perl/wxperl/wxperl_tananyag.txt · Utolsó módosítás: 2019/08/22 10:12 szerkesztette: admin