Bonjour,
Je cherche comment contrôler l'exécution d'un while en Tk :
- Des lignes provenant d'un fichier sont affichées à l'utilisateur,
- Plutôt que de placer une tempo dans la boucle, je souhaite que l'utilisateur affiche ligne par ligne en cliquant sur le widget ET/OU en faisant un <Return>.
- J'arrive à générer un évènement sur <Button-1> dans le widget mais pas à placer l'attente d'évènement dans le while.

Dans le petit extrait ci-dessous :
- Un <Return> (getc) sur la console permet de contrôler l'affichage ligne par ligne dans le widget, mais ce n'est pas pratique et pas du tout opérationnel si le widget est en plein écran.
- Un clic sur <Button-1> sur le widget génère bien un évènement (print "Clic) sur la console, lorsque je mets le getc en commentaire...

Je n'arrive pas à lier le tout, c'est à dire à placer une attente d'évènement dans le while qui contrôle le {next}
Pouvez-vous m'aider, ça fait plusieurs jours que je sèche...
MERCI d'avance !!!

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
45
46
47
48
49
#!/usr/local/bin/perl
# Essai bind.pl
use Tk;
use strict;
 
my $Wm = new MainWindow(
	-title      => "Petit essais",
);
 
my $TextIn = $Wm->Scrolled("Text",
	-height => 9,
	-width => 20,
	-scrollbars => "e",
	-wrap => "word",
	-background => "#ABFAA3",
)->pack(-side => 'bottom', -pady => 5, -padx => 5, -fill => 'both', -expand => 0);
 
my $Char = "";
 
# association physique
$Wm->bind('<ButtonRelease-1>' => \&Suite);
 
Prog ();
 
MainLoop;
 
sub Prog {
	$TextIn->delete("1.0", "end");
	$TextIn->insert( "end", "TOTO\n" );
	while(<DATA>){
		$TextIn->insert( 'end', $_ );
		$TextIn->update;
		$TextIn->see('end');
		print "$_\n";
		$Char = getc;
		# A la place du getc il faut une attente d'évènement sur <ButtonRelease-1> et/ou <Return>
	}
}
 
sub Suite {
	print ("Clic\n");
	# A la place du print, il faut un {next} dans le while 	 
}
 
__DATA__
Ligne 1
Ligne 2
Ligne 3
Ligne 4