Bonjour,
J'aimerais desactivé les boutons créés une fois que l'un d'entre eux a été pressé. J'ai trouvé sur le net le script suivant qui fonctionne très bien :
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 #!/usr/bin/perl -w use Tk; use strict; my $mw = MainWindow->new; my $exit_b = $mw->Button(-text => 'Exit', -command => sub { exit })->pack; my $var = "Disable Exit"; $mw->Button(-textvariable => \$var, -command => sub { my $state = $exit_b->configure(-state); if ($state eq "disabled") { $exit_b->configure(-state => 'normal'); $var = "Disable Exit"; } else { $exit_b->configure(-state => 'disabled'); $var = "Enable Exit"; }})->pack; MainLoop;
Par contre, le mien de fonctionne pas et je ne vois pas la différence entre les 2.
Je tiens à préciser que j'ai commencer le Tk hier et qu'avant, je programmais en Perl avec des mauvaises habitudes i.e sans strict et warnings (non pas tapé moi!!!). J'ai décidé de changer ces habitudes maintenant (ce qui n'est pas forcément le meilleur moment vu que je commence le Tk en meme temps).
J'ai un message d'erreur sur la déclaration du bouton que je veux désactiver et de toute façon la désactivation ne fonctionne pas.
voici le code:
Je suis dessus depuis hier, si quelqu'un a l'amabilité d'aider le newbie que je suis svp.
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 use strict; use warnings; use Tk; # Création du TopLevel my $mw = MainWindow->new(-title => 'humeur'); $mw->minsize (300,300); my $question = $mw->Label (-text => "\netes vous de bonne humeur?") -> pack; my $rbut1 = $mw->Button(-text => "yes", -command => sub { $rbut2->configure(-state => 'disabled'); my $text=$mw->Label(-text => 'Super!', -relief => 'raised', -background => 'yellow',) ->pack(-fill => 'x'); } )-> pack(-side => 'top'); my $rbut2 = $mw->Button( -text => "no", -command => sub { my $text=$mw->Label(-text => 'Dommage!', -relief => 'raised', -background => 'yellow',) ->pack(-fill => 'x');} )-> pack(-side => 'top'); MainLoop;
Merci
Partager