[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 : 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 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!