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 :

Problème getOpenFile sous perl 5.9


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Perl53
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 109
    Par défaut Problème getOpenFile sous perl 5.9
    Bonjour,
    ayant installer perl 5.9, j'ai voulu tester mes anciens programmes et il se trouve que a présent, j'ai un problème quand je récupère un nom de fichier avec la méthode :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_fichier = $fenetre -> getOpenFile ( -initialdir => 'C:\....' ) ;  # sous Windows
    je ne peut pas lire ce fichier ou écrire dedans, par exemple quand c'est un fichier texte alors que avec perl 5.8.3, cela marchait très bien

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $nom_fichier = $fenetre -> getOpenFile ( -initialdir => 'C:/' ) ;  # sous Windows
    http://perl.developpez.com/faq/tk/?p...ectionFichiers

  3. #3
    Membre confirmé Avatar de Perl53
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 109
    Par défaut
    cela ne change rien le problème est que quand le chemin du fichier est stocké dans $nom_fichier, je ne peut pas par exemple lire $nom_fichier alors que si j'initialise $nom_fichier avec un chemin et que je le lis, ça marche

  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
    Un peu plus de code pour voir comment tu t'y prends

  5. #5
    Membre confirmé Avatar de Perl53
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    109
    Détails du profil
    Informations personnelles :
    Âge : 34
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 109
    Par défaut
    mon programme a pour but de lire le fichier audio choisi par getOpenFile, il marchait très bien sous perl 5.8.3 :
    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
    #! /usr/bin/perl -w
    use Tk;
    use Win32::MediaPlayer;
     
    $fenetre = new MainWindow ();
     
    $cadre_bouton = $fenetre -> Frame () -> pack ();
     
    $img_play = $cadre_bouton -> Photo ( -file => "play.gif" );
    $cadre_bouton -> Button (-image => $img_play ,-command => \&Play) -> pack (-side => 'left');
     
    my $types = [
         ['Musique',['.mp3', '.wma']],
         ['Vidéos','.avi'],
     ];
     
    sub Ouvrir {
    	$nom_fichier = $fenetre -> getOpenFile ( -initialdir => 'C:\Users\Kévin\Music' ,-filetypes=>$types) ;  # sous Windows
    	print "$nom_fichier\n" ;
    	$music = "unplay";
    }
     
    sub Play {
    	if ($music ne "play") {
    		$winmm = new Win32::MediaPlayer;  
    		$winmm->load($nom_fichier);        
    		$winmm->play;                    
    		$winmm->volume(100);             
    		$winmm->seek('00:00'); 
    		$music = "play";
    		print 'Total Length : '.$winmm->length(1),$/;
    		print "$music\n";
    		while ($music eq "play") {
    			 $pos = $winmm->pos(1);
    			 $fenetre -> update;
    		}
    	}elsif($pause = "oui"){
    		$winmm->resume;
    		$pause = "non"
    	}
    }
     
    MainLoop ();
    et voici le messgae d'erreur que maintenant j'obtiens, le problème ne venant pas du module, il marche avec une scalaire initialisée :

  6. #6
    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
    Voilà avec quelques correction :
    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
    50
    51
    52
    53
    54
    #! /usr/bin/perl
    use warnings;
    use strict;
    use Tk;
    use Win32::MediaPlayer;
     
    my $fenetre = new MainWindow();
     
    my $cadre_bouton = $fenetre->Frame()->pack();
    my $img_play = $cadre_bouton -> Photo ( -file => "play.gif" );
    $cadre_bouton->Button(
      -image => $img_play ,
      -command => \&Play,
    )->pack( -side => 'left' );
     
    my $music = "unplay";
    my $pause = "non";
     
    sub Ouvrir {
      my $types = [ [ 'Musique', [ '.mp3', '.wma' ] ], [ 'Vidéos', '.avi' ], ];
      my $nom_fichier = $fenetre->getOpenFile(
        -initialdir => 'C:\Users\Kévin\Music',
        -filetypes  => $types,
      );    # sous Windows
      print "$nom_fichier\n";
      $music = "unplay";
      return $nom_fichier;
    }
     
    sub Play {
      my $winmm;
      if ( $music ne "play" ) {
        $winmm = new Win32::MediaPlayer;
        my $nom_fichier = Ouvrir();
     
        $winmm->load($nom_fichier);
        $winmm->play;
        $winmm->volume(100);
        $winmm->seek('00:00');
        $music = "play";
        print 'Total Length : ' . $winmm->length(1), $/;
        print "$music\n";
        while ( $music eq "play" ) {
          my $pos = $winmm->pos(1);
          $fenetre->update;
        }
      }
      elsif ( $pause eq "oui" ) {
        $winmm->resume;
        $pause = "non";
      }
    }
     
    MainLoop();
    C'est marrant, car j'avais déjà fait aussi un petit lecteur de musique en TK il y a quelques temps qui fonctionnait bien .

    Petit conseil.
    - Apprends à bien déclarer tes variables et utiliser use strict;, c'est la base.

    Courage

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

Discussions similaires

  1. Problème police sous IE
    Par rellik dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 28/08/2005, 20h12
  2. .htaccess problème création sous windows
    Par Leviathan_72 dans le forum Apache
    Réponses: 2
    Dernier message: 18/05/2005, 20h29
  3. [langage] Table Dynamique sous PERL ?
    Par Slippers dans le forum Langage
    Réponses: 9
    Dernier message: 09/02/2005, 08h30
  4. Problème de sous-requete.
    Par Oberown dans le forum Access
    Réponses: 2
    Dernier message: 07/10/2004, 16h44
  5. ContextMenu de l'explorer: Problème de sous menu
    Par Ingham dans le forum Composants VCL
    Réponses: 8
    Dernier message: 26/02/2004, 08h06

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