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 :

Perltk pour lancer des scripts perl et R.


Sujet :

Interfaces Graphiques Perl

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Par défaut Perltk pour lancer des scripts perl et R.
    Bonjour, voilà je suis sur une interface graphique et j'ai des petits soucis. Bon pour commencer, j'ai écris ça pour pouvoir soit entrer le nom du fichier voulu (ou dossier), soit ouvrir Fileselect pour en choisir un... Sauf que le soucis c'est que je galère à stocker mes variables et à afficher dans mon entry le fichier une fois choisis avec le Fileselect...
    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
    my $lab1 = $onglet1->Label 
    	( 
    	-text    => 'Choix du dossier "Read" :',
    	-font    => '{arial} 9 bold',
    	)
    	->pack(qw/-padx 10 -pady 10 /, -side=>'left');
    $lab1->grid(-row => 0, -column => 1, );
     
    my $entry1 = $onglet1->Entry(-text => my $file_se1 )->pack( qw/ -side left/ );  
    $entry1->grid(-row => 0, -column => 2, );
     
    my$b1=$onglet1->Button
    	( 
    	-text => '...', 
    	-command => sub 
    		{ 
    		my $start_dir = ".";
    		my $Fsref = $fenetre_principale->FileSelect(-directory => $start_dir,-verify => [ '-e' ]);
    		my $file = $Fsref->Show;
    		$Fsref->configure(
                -command=>\&sous($file),
                -width => 25
    			);
    		sub sous {
    			my $file = $_[0] || '';
    			print "Choix 1 = $file \n";
    			$file_se1=$file;
    			}
    		}, 
    	)->pack( qw/ -side left/ ); 
    &bind_message($b1, "Cliquez pour choisir le dossier contenant les conditions en .fastq à lancer.");
    $b1->grid(-row => 0, -column => 3, );
    Ensuite, mon second soucis est que je veux lancer un perl, où un R avec ces arguments une fois importés , et je ne sais pas trop comment m'y prendre... mon bouton de lancement ressemble à ça pour le moment :
    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
    my$b5=$onglet1->Button
    	( 
    	-text => 'LANCER L\'ETAPE 1 !', 
    	#-command => [\&ma_fonction, $arg1, $arg2...],.
    	-command => sub 
    		{ 
     
     
    #programme là ?
    print "test du lancement 1. \n";
    print "doss 1 : $file_se1 \n";
    print "doss 2 : $file_se2 \n";
    print "doss 3 : $file_se3 \n";
    print "doss 4 : $file_se4 \n";
     
    		}, 
    	)->pack( qw/ -side left/ ); 
    &bind_message($b5, "Cliquez pour lancer le match.");
    $b5->grid(-row => 4, -column => 3, );
    Voilà, j'ai mis les print pour vérifier le fonctionnement, mais là je bloque ... Si quelqu'un pouvais me filer un coup de main ça serrai génial, c'est un projet que je suis censé finir ce week-end max.

  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
    Bonjour,

    Premier conseil, essaye d'améliorer ton indentation, car un code Tk devient très vite illisible, pire si l'indentation n'est pas bonne.
    Secondo, on va procéder par étape et d'abord trouver une solution pour ton premier souci.

    Peux-tu le reformuler et nous donner un code afin que l'on comprenne ce qui ne va pas ?

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Par défaut
    Ok je vais essayer de mieux présenter ça. Donc problème 1 : J'aimerais pouvoir choisir des dossier ou des fichiers via un bouton menant à une fenêtre fileselect et stocker les chemins obtenus dans différentes variables. pour le moment mes boutons ressemblent à ça :
    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
    my$b4=$onglet1->Button
    	( 
    	-text => '...', 
    	-command => sub 
    		{  
    		my $start_dir = ".";
    		my $Fsref = $fenetre_principale->FileSelect(-directory => $start_dir,-verify => [ '-e' ]);
    		my $file4 = $Fsref->Show;
    		$Fsref->configure
    			(
                -command=>\&sous($file4),
                -width => 25
    			);
    		sub sous 
    			{
    			my $file4 = $_[0] || '';
    			print "Choix 4 = $file4 \n";
    			$file_se4=$file4;
    			}
    		}, 
    	)
    ->pack( qw/ -side left/ ); 
     
    &bind_message
    	($b4,
    	"Cliquez pour choisir le dossier de sortie des Logs."
    	);
     
    $b4->grid
    	(
    	-row => 3, 
    	-column => 3, 
    	);
    Le soucis est que j'ai mis le même code pour les autres boutons avec des variables différentes 4 étant pour le bouton 4, Et le soucis est que lorsque je print mes variables par exemple, et bien seulement le dernier est retenu....

  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
    Voici un exemple de programme que tu peux tester et qui fonctionne
    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
    #! usr/bin/perl
    use strict;
    use warnings;
    use Encode;
    use Tk;
     
    my $mw = MainWindow->new( -title => "Sélectionner des fichiers" );
    $mw->minsize( 300, 200 );
    my $button = $mw->Button(
    	-text    => "Exit",
    	-command => sub { exit; }
    )->pack;
     
    my ( $selection1, $selection2 ) = ();
    my $button1 = $mw->Button(
    	-text    => "Sélecion 1",
    	-command => sub {
    		$selection1 = $mw->getOpenFile();
    		if ( defined $selection1 ) {
    			$selection1 = encodage_windows($selection1);
    			print "Selection 1 : $selection1\n";
    		}
    	},
    )->pack;
     
    my $button2 = $mw->Button(
    	-text    => "Sélecion 2",
    	-command => sub {
    		$selection2 = $mw->getOpenFile();
    		if ( defined $selection2 ) {
    			$selection2 = encodage_windows($selection2);
    			print "Selection 2 : $selection2\n";
    		}
    	},
    )->pack;
     
    MainLoop;
     
    # Dans un environnement Windows, cette procédure permet de gérer l'encodage
    sub encodage_windows {
    	my $chaine = shift;
    	my $OS     = lc($^O);
    	if ( $OS eq 'mswin32' and defined $chaine ) {
    		$chaine = encode( 'iso-8859-1', $chaine );
    	}
    	return $chaine;
    }
    Il crée deux boutons de sélection de fichiers et effectue des print. Le plus important est de remarquer l'emplacement des déclarations des variables qui stockerons des fichiers afin de pouvoir les utiliser dans ton script entier.

  5. #5
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mars 2014
    Messages
    15
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 33
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2014
    Messages : 15
    Par défaut
    Ok, premier problème, résolu, getOpenFile ne marche pas sur mon ordi, je ne sais pas pourquoi, mais je me suis inspiré de votre code, et j'ai trouvé le soucis, ma sub sous était la même partout alors j'ai juste numéroté les sous routines et c'est bon :
    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
    my$b4=$onglet1->Button
    	( 
    	-text => '...', 
    	-command => sub 
    		{  
    		my $start_dir = ".";
    		my $Fsref = $fenetre_principale->FileSelect(-directory => $start_dir,-verify => [ '-e' ]);
    		my $file4 = $Fsref->Show;
    		$Fsref->configure
    			(
                -command=>\&sous4($file4),
                -width => 25
    			);
    		sub sous4 
    			{
    			my $file4 = $_[0] || '';
    			print "Choix 4 = $file4 \n";
    			$file_se4=$file4;
    			}
    		}, 
    	)
    Du coup passons au problème suivant si vous voulez bien. J'aimerais que l'utilisateur puisses avoir le choix entre ce bouton, et une Entry pour pouvoir saisir le chemin du fichier désiré, et j'aimerais que lorsque le fichier est séléctionné via le bouton, il s'affiches dans la zone entry. Voilà mon code pour le moment... Je pensait qu'il faillais peu être update la valeur dans le champ ou quelque chose du genre... Mais j'ai pas réussit...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    my $entry4 = $onglet1->Entry(-text => my $file_se4 )->pack( qw/ -side left/ );  
    $entry4->grid(-row => 3, -column => 2, );
    Ça me parais naze comme soucis, mais pour ma défense, j'ai pas eu de cours en tk et juste quelques bases de perl. Donc j'apprends sur le tas...

  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
    L'écriture de votre code n'est vraiment pas bonne. Les sous programmes sont déclarées n'importe comme et surtout appelée n'importe comment dans Tk.
    Je vous ai mis le code pour que vous puissiez vous en inspirer. Et il y a aussi la FAQ Perl Tk de disponible sur ce site.

Discussions similaires

  1. Logiciel pour lancer des script sql
    Par passicon dans le forum Général Dotnet
    Réponses: 1
    Dernier message: 11/09/2013, 11h18
  2. aide pour comprendre des Script perl
    Par la_star160 dans le forum Langage
    Réponses: 2
    Dernier message: 17/07/2008, 20h40
  3. Réponses: 7
    Dernier message: 10/10/2005, 18h54
  4. [Système] Lancer un script Perl
    Par ebaynaud dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 14/10/2004, 14h54
  5. Réponses: 13
    Dernier message: 01/10/2004, 14h03

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