le decor
- un champ de saisie avec controle (EntryCheck)
- un bouton déclencheur (Button)
- une zone texte (Text)
- un sous-programme qui multiplie par 2 la donnée saisie et affiche le résultat dans la zone texte
1ère methode
le bouton appelle le sous-programme, ce dernier manipule lui-même le champ saisi
Cela fonctionne
2ème methode
le bouton appelle le sous-programme en lui passant le champ saisi en paramètre
Cela ne fonctionne pas : 0 est affiché. Je ne comprends pas pourquoi.
-------------
1ère méthode
2ème méthode
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 use strict; use Tk; use Tk::EntryCheck; my $saisie; my $main = MainWindow->new(-title => 'multiplier par 2'); my $ymannum = $main->EntryCheck(-maxlength =>3, -pattern => qr/\d/, # que des chiffres -textvariable => \$saisie )->pack( qw/ -side left / ); my $btmannum= $main->Button(-background => 'yellow', -text => 'calculez', -command => \&calculez ) -> pack( qw/ -side left / ); my $resu = $main->Text ('-width'=> 40, '-height' => 1 )->pack; MainLoop; sub calculez { $resu->delete('1.0', 'end'); $resu->insert('end', $saisie * 2); }
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 use strict; use Tk; use Tk::EntryCheck; my $saisie; my $main = MainWindow->new(-title => 'multiplier par 2'); my $ymannum = $main->EntryCheck(-maxlength =>3, -pattern => qr/\d/, # que des chiffres -textvariable => \$saisie )->pack( qw/ -side left / ); my $btmannum= $main->Button(-background => 'yellow', -text => 'calculez', -command => [\&calculez,$saisie] ) -> pack( qw/ -side left / ); my $resu = $main->Text ('-width'=> 40, '-height' => 1 )->pack; MainLoop; sub calculez { my ($nombre) = @_; $resu->delete('1.0', 'end'); $resu->insert('end', $nombre * 2); }
Partager