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 :

Ouverture d'une même application à partir d'un thread


Sujet :

Interfaces Graphiques Perl

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 12
    Points
    12
    Par défaut Ouverture d'une même application à partir d'un thread
    Bonjour à tous,
    je vais essayer d'expliciter clairement mon pb (pas comme avec ce titre calamiteux!)

    Le but de la manoeuvre est d'ouvrir à partir d'une interface en perl/tk une application, par exemple "nedit" ou tout autre éditeur de texte.

    Je donne au thread un argument, par exemple $toto = 1 et quand j'appuie sur le bouton qui lance le thread, la commande "nedit toto1" (avec 1 venant de $toto) est exécutée.

    Jusque là, tout va bien. La fenêtre s'ouvre.

    Je voulais savoir s'il était possible avec le même thread d'ouvrir une 2ème fois l'éditeur (ou une application quelconque) en envoyant une autre valeur pour $toto (par exemple 2)?

    Voici le bout de code pour faire le test

    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
    #!/usr/bin/perl
     
    use strict;
    use warnings;
     
    use Tk;
     
    use threads;
    use threads::shared;
     
    my %LesFonctions=("toto"=>\&toto);
    my $ThreadTravail : shared; 
    my $TuerThread : shared;
    my $nomFonction : shared;
    my @ArgumentsThread : shared; 
    my $Thread = threads->create(\&MonThread);
    my $toto='1';
     
    $ThreadTravail=0;
    $TuerThread=0;
     
    my $mw = MainWindow->new;
     
    $mw->protocol('WM_DELETE_WINDOW' => sub{ $Thread->detach(); $TuerThread=1; sleep 1; exit});
     
     
    $mw->Button(-text=>'toto', -command=> sub {&majThread})->pack();
    #$mw->Button(-text=>'exit', -command=> sub { exit })->pack();
    $mw->Radiobutton(-text=>'1', -variable=>\$toto, -value=>'1')->pack(-side=>'left');
    $mw->Radiobutton(-text=>'2', -variable=>\$toto, -value=>'2')->pack(-side=>'left');
    $mw->Radiobutton(-text=>'3', -variable=>\$toto, -value=>'3')->pack(-side=>'left');
     
    MainLoop;
     
    sub MonThread{
     
    	while (1) {
     
    		if ( $ThreadTravail == 1 ) {
     
    		$LesFonctions{$nomFonction}->(@ArgumentsThread);
     
          		$ThreadTravail = 0;
       		 }
     
        		last if ( $TuerThread == 1 );
     
       		 sleep 1;
     	 }
      	return;
    }
     
    sub majThread {
    	$nomFonction ="toto";
    	@ArgumentsThread =($toto); 
    	$ThreadTravail = 1;
     
    }
     
    sub toto{
    my $toto = $_[0];
    system("nedit toto$toto")
    }
    Les radio boutons permettent bien entendu de choisir la valeur de $toto à fournir au thread.

    Premier clic sur le bouton toto, l'éditeur s'ouvre. Choix d'une autre valeur et 2ème clic sur le bouton, rien ne se passe. Normal.

    Si je crée un second thread, je pense que je peux ouvrir 2 éditeurs, avec un troisième, trois éditeurs... Mais je voudrais éviter d'avoir à générer (si c'est techniquement possible) un thread à chaque clic sur le bouton toto...

    Merci d'avance

  2. #2
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Tu es sous Linux ?
    Juste par curiosité, quel est l'intérêt d'utiliser les threads ? Car vu ton programme, je trouve que tu le compliques inutilement en utilisant les threads ?

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Ok au temps pour moi.
    Suffit de rajouter le symbole "&" à la fin de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("nedit toto$toto &")

  4. #4
    Responsable Perl et Outils

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

    Informations forums :
    Inscription : Avril 2004
    Messages : 19 820
    Points : 499 184
    Points
    499 184
    Par défaut
    Citation Envoyé par Kroui Voir le message
    Ok au temps pour moi.
    Suffit de rajouter le symbole "&" à la fin de la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    system("nedit toto$toto &")

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    16
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2011
    Messages : 16
    Points : 12
    Points
    12
    Par défaut
    Le programme était volontairement simple pour illustrer le propos.
    Le code entier est confidentiel et bien trop long

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

Discussions similaires

  1. Différencier les instances d'une même application
    Par Laurent.B dans le forum Plateformes (Java EE, Jakarta EE, Spring) et Serveurs
    Réponses: 4
    Dernier message: 19/09/2006, 16h00
  2. ouverture d'une page a partir d'une BD
    Par bourvil dans le forum ASP
    Réponses: 2
    Dernier message: 20/10/2005, 17h28
  3. Ouverture d'une base Access à partir d'une autre base access
    Par Julien Dufour dans le forum Access
    Réponses: 3
    Dernier message: 19/10/2005, 17h13
  4. Réponses: 2
    Dernier message: 24/03/2004, 10h22

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