Bonjour,
J'ai un problème surement trivial pour vous mais que je n'arrive pas à résoudre. J'ai un problème de récupération de variable d'une fonction lorsque j'utilise Tk.
En effet, sans tK, cela se passe bien, avec le script ci-dessous, tout fonctionne.
J'ai bien la ligne 1 qui s'écrit avant la ligne 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 #!/usr/bin/perl use strict; use warnings; my $part1='ABC'; my $conc=&AJOUT($part1); print "\n2eme ligne (demandee dans le main) : valeur de concatenation = $conc\n"; sub AJOUT { my $part2='DEF'; my $ajout=$_[0].$part2; print "\n1ere ligne (demandee dans la fonction): valeur de concatenation = $ajout\n"; return $ajout; }
Par contre quand je passe en Tk, j'ai plusieurs problèmes. J'ai fait ce script afin qu'il ressemble à celui d'avant:
Les problèmes sont :
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
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 #!/usr/bin/perl use strict; use warnings; use Tk; my $mw = MainWindow->new(); $mw->minsize (500,500); my $intro = $mw->Label(-text => 'Ajout morceau de variable', -relief => 'raised', -background => 'yellow',) ->pack(-fill => 'x'); my $part1='ABC'; my $conc=''; $conc=&AJOUT($part1); print "\n2eme ligne (demandee dans le main) : valeur de concatenation = $conc\n"; MainLoop; sub AJOUT { my $part=$_[0]; my $entete_list=$mw->Label(-text=>'Que voulez vous ajouter?')->pack; my $list = $mw->Listbox()->pack; my $bouton_OK = $mw->Button(-text=> 'OK')->pack; $list->insert('end','ABC','DEF','GHI'); $bouton_OK->configure(-command => sub { my $ID=$list->curselection(); my $select=$list->get($ID); my $ajout=$part.$select; print "\n1ere ligne (demandee dans la fonction): valeur de concatenation = $ajout\n"; return "$ajout"; } ); }
- message d'erreur "Use of uninitialized value in concatenation (.) or string at line 20. Cette ligne correspond à l'écriture de la ligne 2. Problème sur la variable $conc, il n'arrive pas à récupérer la valeur issue de la fonction mais je ne comprends pas pourquoi.
- Il m'écrit d'abord la ligne 2 avant la ligne 1?? Je ne comprends donc pas pourquoi il execute tout ce qu'il ya dans le main avant de passer aux fonctions? Quel est l'intêret de faire des fonctions si il ne les execute qu'après?
Je dois faire un mauvais truc mais je ne vois pas.
Merci d'avance
Partager