Bonjour,
J'ai crée une fenêtre contenant une liste, supprimée par un bouton de validation. Le problème est que ce bouton, ne faisant pas que détruire la fenêtre, fonctionne à la première validation mais jamais la deuxième fois.
J'ai tenté deux solutions:
- sur la première, la fonction destroy, est contenue dans la fonction "valider" lancée par le bouton validation. Cette première solution échoue quelle que soit le contenu de la fonction.
- sur la seconde, la fonction destroy est placée à la suite de l'appel à la fonction (-command => sub {&valider; $f_sec -> destroy();} ). Cette seconde solution échoue à cause des instructions "curselection" et "get" faisant appel à la variable $liste.
J'espère avoir été assez clair...Sinon peut être que mon script vous permettra de mieux comprendre ce que j'ai essayé de résumer.
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
42
43
44 #! /usr/bin/perl use strict; use Tk; my $window; $window = new MainWindow (); $window -> title("maintenance du reseau"); $window -> minsize(qw(500 830)); $window -> Button ( -text => "afficher", -command => \&fenetre ) -> pack (); MainLoop (); sub fenetre { my $f_sec; my $liste; $f_sec = $window -> Toplevel (); $liste = $f_sec -> Listbox ( -selectmode => 'single' ) -> pack (); $liste -> insert (0, "toto", "titi"); $f_sec -> Button ( -text => "valider", -command => \&valider #---> 1ere solution # -command => sub {&valider; $f_sec -> destroy();} #---> 2eme solution ) -> pack (); sub valider { my @selectListe; my $selectListe; @selectListe = $liste -> curselection (); #---> $selectListe = $liste -> get($selectListe[0]); #---> Les deux lignes qui posent problème pour la 2eme solution print $selectListe."\n"; $f_sec -> destroy (); #---> ligne suprimée pour la 2eme solution } }
Partager