IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Interfaces Graphiques Perl Discussion :

Ecran Tk clignote avec Console


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 442
    Par défaut Ecran Tk clignote avec Console
    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
    						}
    					}
    				}

  2. #2
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Qu'entends-tu par changement de fichier ou d'une temporisation ?

  3. #3
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 442
    Par défaut
    Bonjour djibril et merci de t'intéresser à mon problème.

    par chargement d'un fichier :
    éventuellement l'écriture dans le widget :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($Ligne = <FIC>) {
    	$Texte->insert("end", "\n");
    	$Texte->insert("end", $Ligne , "tcours");
    	$Texte->update();
    	$Texte->see('end');
    }
    par temporisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Pause = $Wm->after($Tempo * 50);
    enfin ce genre d'instruction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $Wm->afterCancel($Pause);
    J'avais des doutes sur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    my $Texte = $Wm->Scrolled("Text",
    	-scrollbars => "e",
    	-takefocus => 0,
    	-wrap => "word",
    	-background => "#ABFAA3",
    )->pack(-side => 'bottom', -fill => 'both', -expand => 1);
    # Ce qui suit ne fait rien. Le -takefocus au-dessus non plus :-(

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $Texte->optionAdd('*Frame.TakeFocus','0');
    $Texte->optionAdd('*Scrollbar.TakeFocus','0');
    Mais j'avais que ça ne fait rien... d'où le commentaire.

    Je n'arrive pas à cerner un évènement qui pourrait correspondre, car en plus ce n'est pas systématique...

  4. #4
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Ton programme est-il confidentiel ? Si non, est-ce possible de l'avoir en entier pour le tester ?

  5. #5
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 442
    Par défaut
    Non il n'y a rien de secret chez moi !
    J'ai fait un extrait sinon c'est trop gros et il fait 56 Mo sur ci_joint.com la limite est 8 Mo, comment te le faire parvenir.
    Le programme en lui-même ne fait que 25 Ko, mais sans les fichiers tu ne verras pas grand chose. Pour le moment je le joints, après tu me diras...

    http://cjoint.com/?0KjgVnR4TRs

    MERCI
    PS : Ce n'est pas un modèle du genre !!!

  6. #6
    Membre Expert Avatar de dmganges
    Homme Profil pro
    Retraité. Ne recherche pas un emploi.
    Inscrit en
    Septembre 2011
    Messages
    1 442
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Retraité. Ne recherche pas un emploi.
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2011
    Messages : 1 442
    Par défaut
    Une piste peut-être :

    J'ai utilisé le programme tant sur Linux que sur XP sans pb.
    Sur Linux pour le son je lançais mplayer en ligne de commande.
    Sur XP pour le son je lançais sndrec32.exe en ligne de commande.

    Sous Windows7 (nouveau PC) pas de sndrec32.exe, j'ai bien essayé de le récupérer de XP mais ne fonctionne pas, j'ai donc utilisé le module Win32::MediaPlayer;

    Bien qu'étant en Perl 32bits, j'ai un petit doute de ce côté...
    PS: Dans le cours.pl joint, j'ai mis en commentaire la partie Linux...
    Je suis absent de la matinée.

  7. #7
    Responsable Perl et Outils

    Avatar de djibril
    Homme Profil pro
    Inscrit en
    Avril 2004
    Messages
    19 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 822
    Par défaut
    Citation Envoyé par dmganges Voir le message
    Non il n'y a rien de secret chez moi !
    J'ai fait un extrait sinon c'est trop gros et il fait 56 Mo sur ci_joint.com la limite est 8 Mo, comment te le faire parvenir.
    tu peux les joindre fichiers par fichiers ? Sauf il y en a qui font plus de 8Mo.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Formulaire][03]Clignotement avec TabControl
    Par Pmatt dans le forum IHM
    Réponses: 5
    Dernier message: 26/04/2007, 11h04
  2. Impossible de prendre une valeur avec Console.Read( ?
    Par Tux1 dans le forum Windows Forms
    Réponses: 9
    Dernier message: 07/01/2007, 16h29
  3. [Sécurité] Ecran De Login Avec Htaccess
    Par rte304 dans le forum Langage
    Réponses: 3
    Dernier message: 08/12/2006, 14h03
  4. Stocker un imprim ecran sous bmp avec l'api windows
    Par Tofalu dans le forum Windows
    Réponses: 7
    Dernier message: 04/05/2005, 11h32

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo