Tk::Spinbox et -validatecommand
[Il semblerait que le problème décrit ci-dessous soit un bug dans la librairie Tk]
Bonjour,
Voici quelques heures que je passe sur ces problèmes: rien n'y fait. Dans le code qui suit:
1/ la -vcmd n'est plus invoquée à partir du moment où elle a retourné une fois 0; < Il suffit de reconfigurer -validate => "all" a posteriori;
2/ la -vcmd n'empêche pas la valeur de la spinbox de changer;
3/ -invcmd n'est jamais appelé;
Code:
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 strict;
use Tk;
my $mw = MainWindow->new(-title => "spinbox test");
my $spinbox1 = $mw->Spinbox(
-width => 2,
-value => [1 .. 100],
-validate => "all",
)->pack;
$spinbox1->configure(-vcmd => [\&validate1, $spinbox1]);
$spinbox1->configure(-invcmd => sub {print STDERR "oops" });
sub validate1 {
my ($spinbox, $new, $discard, $old) = @_;
return 0 if $new == 5;
print STDERR "$spinbox: $old -> $new\n";
return 1;
}
MainLoop(); |
J'ai essayé de vérifier que l'option -validate redevenait bien "all" après chaque invocation de la -vcmd, mais sans succès.
Une idée?
Merci de votre aide!