Bonjour,
A tout hasard je vous soumets un comportement bizarre :
L'anomalie se produit sous ActivePerl-5.12.4 Windows7,
MAIS pas sous Strawberry sous XP (Même code , PC différents).
Mon programme en Perl/Tk affiche des phrases arabe et français ainsi que le son arabe et français.
Chaque phrase est contenue séparément dans un fichier.
L'interface permet de gérer de nombreux paramètres présence de la traduction, du son, temporisation entre les fichiers, taille des caractères...
Tout se passe bien lorsque au début je choisis les paramètres et lance le programme, il se déroule sans accroche, sauf :
si en cours d'exécution je bouge la souris sans pour autant cliquer sur un bouton, à partir de là il y a un basculement permanent entre l'interface Perl Tk et la console invite de commande DOS à partir de la quelle je lance le programme. Le basculement est aléatoire mais semble se produire lors du changement de fichier ou d'une temporisation, difficile à cerner.
Tant que je ne touche pas à la souris tout est OK !
Ce n'est pas très contraignant de ne pas la toucher, car une fois que j'ai choisi les paramètres en début de cours, je n'ai normalement pas à les modifier...
Mais si quelqu'un a une idée, je prends !
MERCI d'avance.
Je colle quelques bouts de code pour montrer ce que j'utilise, je ne fais rien de Sioux... Au pire je peux tout coller, mais ça fait long... et si quelqu'un a déjà eu çà ce n'est pas indispensable...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 #!/usr/bin/perl # # Cours d'Arabe # use strict; use warnings; use Tk; use encoding 'cp1256'; use Encode::Arabic; use Config; use Win32::MediaPlayer; my $winmm = new Win32::MediaPlayer; # new an object
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 if ($OS eq "MSWin32") { $winmm->load($Wav); # Load music file disk, or an URL $Pause = $Wm->after(250); sleep 2; $winmm->play; # Play the music $winmm->volume(100); # Set volume after playing @Time = split (/:/,$winmm->length(1)); $Duree = sprintf '%02d%02d', $Time[0], $Time[1]; sleep int($Duree + 2); $winmm->close; }
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 if ($TraE eq "1" && $Tempo > 3) { my @NumFic = split (/\_/,$NomFic[0]); $IN_Fic = "$Rep/T_$NumFic[1].cp1256"; if ( -f "$IN_Fic") { if ($Tempo != 0) { $Pause = $Wm->after($Tempo * 50); # Pause 9 - avant commentaire écrit } open (FIC,$IN_Fic); while ($Ligne = <FIC>) { $Texte->insert("end", "\n"); $Texte->insert("end", $Ligne , "tcours"); $Texte->update(); $Texte->see('end'); } if ($Tempo != 0) { $Pause = $Wm->after($Tempo * 200); # Pause 10 - après commentaire écrit } } }
Partager