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 :

fonction parcourir ()


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut fonction parcourir ()
    Merci pour ta réponse je vais donc tenter de l'appliquer

    Pourrait tu m'aider a comprendre ceci stp?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $frame1 ->Button ( -text => 'Parcourir' ,
                         -command => sub {
                            			 my $chemin = $fen -> getOpenFile ( -initialdir => '/home') ;  
                        				 }
                	) ->pack (-anchor=>'w') ;
    Le truc c'est que je souhaiterais retourner $chemin mais je ne comprend pas sub sans nom.
    C'est bien une fonction? Comment pourrais je le retourner? svp

    Edit : j'ai fait un changement mais du coup mon boutton ne fonctionne plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    sub Chemin()
    {
    my $chemin = my $fenetre -> getOpenFile ( -initialdir => '/home') ;  
    return $chemin;
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    #parcourir
    $frame1 ->Button ( -text => 'Parcourir' ,
                       -command => \&Chemin
                	 ) ->pack () ;
    pourrais tu m'aider svp?

    merci davance

  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
    Voici un exemple :

    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
    #parcourir
    my $Chemin;
    $frame1->Label ( 
      -text => 'Chemin' ,
      -textvariable => \$Chemin,
    )->pack();
    $frame1->Button ( 
      -text => 'Parcourir' ,
      -command => [\&Chemin, $frame1, \$Chemin],
    )->pack();
     
    sub Chemin {
      my ($Widget, $RefChemin) = @_;
     
      my $File = $Widget->getOpenFile(
        -initialdir => '/home',
      );
     
      ${$RefChemin} = $File;
     
      return;
    }

  3. #3
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    J'avais pas vu ta réponse merci beaucoup

    j'ai un autre petit problème il me met une erreur dans mon constructeur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    sub new($picture)
    {
    	my $picture;
     
    	$photo = $picture;
    	$conn = new ConnectionFTP();
    	$connexion = $conn -> ConnectionFTP();
    }
    il me met une erreur a la premiere ligne

    aide moi stp

    merci d'avance

  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
    Bon, faut que tu arrêtes de nous mélanger dans tes codes.

    1- Ton code n'as rien avoir avec Tk
    2- Il sort de nul part et il est impossible de t'aider ainsi
    Une erreur oui et la quelle ? Faut essayer d'être plus rigoureux quand vous chercher de l'aide, car sincèrement, ça ne donne pas envie de vous aider s'il faut se creuser la cervelle a deviner ce qui ne va pas.

    3- Ta façon de créer un constructeur est très mauvaise. Faut lire les articles sur Perl Objet à ce sujet

    Merci

  5. #5
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    OK alors désolé donc je vais donc vous mettre mes codes entiers pour que vosu compreniez d'accord? Désolé je ne vois que ca pour que tu voye mieux.

    Donc le fichier Interface.pl

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    #!/usr/bin/perl
    use strict;
    use Tk;
    use warnings; 
    use Tk::Photo;
    use Tk::PNG;
     
    use Transferts;
     
    #Création de la fenêtre principale
    my $fenetre = MainWindow->new();
     
    #Définition de la taille min de la fenêtre
    $fenetre->minsize('500','300');
     
    #Définition du title de la fenêtre
    $fenetre->title("Islo People");
     
    #Création de la barre de menu
    my $barre_menu = $fenetre->Frame(-relief => 'groove' , -borderwidth => 2);
     
    #Création de la barre du menu général
    my $menu_gen = $barre_menu->Menubutton(
                                         -text => 'Menu' ,
                                         -font => '{Garamond} 10',
                                         -tearoff => 0 ,
                                         -menuitems => [
                                                         [ 'command' => 'Quitter' ,
                                                           -font => '{Garamond} 10',
                                                           -command => \&Quitter
                                                         ]
                                                       ]
                                       );
     
    #  Création d'un cadre
        my $frame1 = $fenetre->Frame()->pack(-side => "bottom",-padx => 0, -pady => 0);
     
    #Affichage du menu général à gauche
    $menu_gen->pack(-side => 'left');
     
    #Affichage de la barre de menu en haut de la fenêtre
    $barre_menu->pack(-side => 'top', -anchor => 'n', -fill => 'x');
     
    my $ObjImage = $fenetre->Photo( -format => "png", -file => "/home/seb/Desktop/Islo_people/logo.png" );
    my $bouton2 = $fenetre -> Button 	(
        				-image => $ObjImage
    				)->pack();
     
    #parcourir
    $frame1 ->Button ( -text => 'Parcourir' ,
                       -command => \&Chemin
                	 ) ->pack () ;
     
    sub new
    {
    	my $t=new transferts;
    	$t->transfert(my $chemin);
    }
     
     
    # Envoyer
    $frame1 ->Button 	(
    					-text => 'Envoyer' ,
    					-command =>sub{Transferts::Transfert()}
    					)
    					->pack(); 
     
     #my $status_var =0;
     
        #$frame1->ProgressBar(
         #            -borderwidth => 10,
         #            -relief => 'sunken',
         #            -width => 35,
          #           -length => 500,
          #           -padx => 0,
          #           -pady => 0,
          #           -variable => \$status_var,
         #            -colors => [0, 'green'],
         #            -resolution => 0,
          #           -blocks => 50,
          #           -anchor => 'w',
          #           -from =>'0',
          #           -to => '100'
          #          )->pack(
          #                  -padx => 10,
          #                  -pady => 10,
          ##                  -fill => 'both'
          #                 );
     
        # La boucle dans laquelle la variable de ProgressBar change
     
        #for (my $lostime = 0 ; $lostime < 101 ; $lostime += 5)
        #{
        #    sleep 1 ;
        #    $status_var=$lostime ;
     
            # l'instruction suivante permet la prise en compte
            # des changements de valeurs de $status_var dans Perl/Tk,
            # ici  le widget Progressbar
     
         #   $fenetre->update;
       # }
     
       # sleep 5;
       #print "Fin de l'exemple update \n";
       # $fenetre->destroy;
     
    #Création de notre barre de statut à l'aide d'un Label
    #my $barre_statut = $fenetre->Label(-relief => 'groove', -text => "Islo people", -font => '{Garamond} 10');
     
    #On l'ajoute en bas de la fenêtre afin de lui donner l'effet barre de statut
    #$barre_statut->pack( -side => 'bottom', -fill => 'both');
     
    #Définition de la fonction de fermeture de l'application
    sub Quitter 
    {
        exit(0);
    }
     
    sub Chemin()
    {
    my $chemin = $fenetre -> getOpenFile ( -initialdir => '/home') ;  
    return $chemin;
    }
     
    MainLoop;
    Le fichier Transferts.pm

    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
    55
    56
    #!/usr/bin/perl
     
    use strict;
    use warnings;
    use Net::FTPSSL;
     
    use Connexion;
     
    package Transferts;
     
    my $photo;
    my $connexion;
    my $conn;
     
    sub new
    {
    	#$_[0] etant le premier parametre lors de l'appel de la fonction
    	my $picture=$_[0];
     
    	$photo = $picture;
    	$conn = new ConnectionFTP();
    	$connexion = $conn -> ConnectionFTP();
    }
     
    sub Transfert()
    {
    	my $verify;
    	my $ftps;
     
    	$conn = Connexion::ConnectionFTP();
    	$verify = VerifierExtension();
     
    	if($verify == "Connecté")
    	{
    		$ftps->put($_[0]); 
    	}
    	else
    	{
    		print "Mauvaise extension\nAutorise : jpeg, raw\n";
    	}
    }
     
    sub VerifierExtension()
    {
    	my $TonFichier = $_[0]; 
     	my $extension = "correct";
     
    # Verification de l'extension
    unless ( -e $TonFichier and $TonFichier =~ m{(?:jpe?g|raw)$} ) 
    		{
      		die($extension = "incorrect");
    		}
    	return $extension;
    }
     
    1;
    le fichier Connexion.pm

    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
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    #!/usr/bin/perl
    use strict;
    use warnings;
    use Net::FTPSSL;
     
    package Connexion;
     
    # $file correspond au fichier de configuration du FTP
    my $file = '/home/seb/workspace/Islo_People/Configuration';
    my $user;
    my $mdp;
    my $server;
    my $port;
     
    # Constructeur
    sub new
    {
    	my @parametre = Recherche_parametre();
    	$user = $parametre[0];
    	$mdp = $parametre[1];
    	$server = $parametre[2];
    	$port = $parametre[3];
    }
     
    # Fonction qui parcours le fichier de configuration et qui les retournent
    sub Recherche_parametre()
    {
    	#Déclaration des variables
    	my $lignes;
    	my @config;
    	my @parametre;
     
    	#Ouverture du fichier de configuration
    	open(CONF, "<".$file);
    	# $lignes prend la valeur du fichier de configuration
    	while(defined($lignes = <CONF>))
    	{
    			#Séparation des attributs de $lignes 
    			@config = split("=", $lignes);
     
    			if($config[0] == 'user')
    			{
    				# Si la première valeur du tableau config est égale 
    				#à user alors $user prend la valeur de la deuxième valeur du tableau
    				$user=$config[1];
    			}
    			if($config[2] == 'mdp')
    			{
    				$mdp=$config[3];
    			}
    			if($config[4] == 'server') 
    			{
    				$server=$config[5];
    			}
    			if($config[6] == 'port')
    			{
    				$port=$config[7];
    			}
    		#Construction du tableau parametre avec les valeurs nécessaires à la connection du FTP
    		@parametre=($user,$mdp,$server,$port);
    	}
    	#Fermeture du fichier
    	close(CONF);
     
    	#On retourne le tableau
    	return @parametre;
    }
     
    # Fonction Connection qui retourne la valeur de l'état de la connection au FTP
    sub ConnectionFTP
    {
    	# Initialisation de $etat à vrai
    	my $etat = "vrai";
    	#my $parametre = Recherche_parametre();
    	#$user = $parametre[0];
    	#$mdp = $parametre[1];
    	#$server = $parametre[2];
     
     
    	#Connection au FTP
    	my $ftps = Net::FTPSSL->new($server,
    								Port=> $port,
    								Debug => 1)
    			or $etat = "faux"; # Si la connection n'est pas effectué $etat prend la valeur faux
     
    	$ftps->	login('$user', '$mdp')
    		or $etat = "faux"; # Si la connection n'est pas effectué $etat prend la valeur faux
     
    	# On retourne $etat
    	return $etat;
    }
     
    # Fonction Connection au FTP
    sub VerifierConnection
    {
    	my $connexion = ConnectionFTP();
     
    	if($connexion == 'vrai')
    	{
    		$connexion = "Connecté";
    	}
    	else
    	{
    		$connexion = "Non Connecté";
    	}
     
    	return $connexion;		
    }
    1;
    et le fichier de configuration

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    user=photographe
    mdp=passe
    server=10.0.2.69
    port=21
    Voila donc je t'explique le problème il s'avère que comme tu peut le voir je tente de mettre un fichier sur un ftp.
    Hélas l'envoi ne fonctionne pas et je ne comprend pas pourquoi ca me met une erreur a la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $ftps->	login('$user', '$mdp')
    de Connexion.pm

    Et voici l'erreur

    <<+ 555 Host undefined
    Tk::Error: Can't call method "login" on an undefined value at /home/seb/workspace/Islo_People/Connexion.pm line 86.
    Tk callback for .frame1.button1
    Tk::__ANON__ at /usr/lib/perl5/Tk.pm line 250
    Tk::Button::butUp at /usr/lib/perl5/Tk/Button.pm line 175
    <ButtonRelease-1>
    (command bound to event)

    Donc voila je sais que c'est un peu lourd a regardez mais tu ma demandé de bien situé le problème voila qu'y est fait je pense

    Aide moi stp je suis vraiment bloqué stp

    merci d'avance

  6. #6
    Membre éclairé
    Inscrit en
    Avril 2008
    Messages
    369
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 369
    Par défaut
    Juste pour dire que je suis toujours bloqué afin de ne pas zapper la discution voila. Je comprend que ca peut prendre du temps pour éxaminer le code

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

Discussions similaires

  1. [Débutant] Fonction "Parcourir" et lecture d'Excel
    Par Chamane106 dans le forum VB.NET
    Réponses: 3
    Dernier message: 17/06/2013, 02h09
  2. Réponses: 8
    Dernier message: 18/05/2011, 14h04
  3. fonction parcourir et sélection
    Par joe12260 dans le forum ASP.NET
    Réponses: 1
    Dernier message: 25/06/2009, 09h38
  4. Réponses: 8
    Dernier message: 01/12/2006, 09h05
  5. Fonctions récursives pour parcourir un arbre
    Par mikedavem dans le forum C
    Réponses: 4
    Dernier message: 05/06/2006, 12h00

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