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

Tkinter Python Discussion :

envoie et réception d'argument entre 2 programmes


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2014
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2014
    Messages : 9
    Points : 14
    Points
    14
    Par défaut envoie et réception d'argument entre 2 programmes
    Bonjour,
    Je rencontre un problème avec le passage d'argument entre 2 programmes. Je m'explique:
    Le 1° programme appelle le 2° en lui passant un argument.
    Mais je n'arrive pas à récupérer cet argument dans le 2° programme, afin de constituer une variable du style var="libelle" + "argument_reçu"
    Avez-vous des exemples à me proposer, car malgré toute mes recherches, je n'avance pas.
    Je n'ai rien qui s'affiche.

    Merci pour votre aide.


    Ci-dessous le pgm qui passe l'argument ( pgm1.py ):
    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
     
    from tkinter import *
    from tkinter.messagebox import *
    import os
    import sys
    sys.argv=["pgm2.py","arg1"]
    print (sys.argv[0]) #Affiche argument 1
    print (sys.argv[1]) #Affiche argument 2
    argument = sys.argv[1]
    print (argument)
    def executer() :
    	os.popen("C:\chemin\pgm2.py argument")
     
    #  Menu principal
    fen1 = Tk()
    tex1 = Label(fen1, text='Bonjour !!!', fg='blue')
    tex1.pack()
    bou1 = Button(fen1, text='Quitter', command = fen1.destroy)
    bou1.pack()
    bou3 = Button(fen1, text='Executer le programme', command = executer)
    bou3.pack()
     
    fen1.mainloop()
    Et la celui qui réceptionne (pgm2.py):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    import os
    import sys
    print (sys.argv[0]) #Affiche arg1
    print (sys.argv[1]) #Affiche arg2
    argument=sys.argv[1]
    print (argument)

  2. #2
    Expert éminent

    Homme Profil pro
    Inscrit en
    Octobre 2008
    Messages
    4 300
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2008
    Messages : 4 300
    Points : 6 780
    Points
    6 780
    Par défaut
    Salut,


    Et où penses-tu récupérer cet argument dans le deuxième programme ?

    Pour être plus clair, le print (argument) de pgm2 où est-il censé apparaître selon toi ?

    D'autre part, il faut utiliser subprocess.Popen à la place de os.popen

  3. #3
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 283
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 283
    Points : 36 770
    Points
    36 770
    Par défaut
    Salut,

    Il faut procéder en plusieurs étapes:

    1 - vérifier que la commande "C:\chemin\pgm2.py argument" s'exécute à la console. Ca dépend de l'association entre l'extension .py et le programme à lancer lorsque... Si çà ne fonctionne pas la commande "python C:\chemin\pgm2.py argument"

    2 - popen lance une commande et retourne un pipe dans lequel il faut lire pour récupérer la sortie du programme appelé:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    >>> from os import popen
    >>> p = popen('py -3.3 zfoo6.py abc')
    >>> p.read()
    'zfoo6.py\nabc\nabc\n'
    >>> p.read()
    ''      # <=> EOF
    3 - préférez utiliser subprocess comme suggéré par VinsS

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

Discussions similaires

  1. [RCP] Envoi et réception des données entre view et window
    Par chiraz86 dans le forum Eclipse Platform
    Réponses: 0
    Dernier message: 25/03/2010, 20h01
  2. [Apis]parser les arguments d'un programme Java
    Par sacofan dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 06/08/2005, 14h32
  3. [TP] Echanger des données entre deux programmes
    Par ILIAS Raphaël dans le forum Turbo Pascal
    Réponses: 3
    Dernier message: 22/03/2005, 09h31
  4. Question de pointeur entre un programme et une DLL
    Par Neilos dans le forum C++Builder
    Réponses: 12
    Dernier message: 01/02/2005, 19h12
  5. Envoi d'un flux audio entre 2 PC
    Par TheDarkLewis dans le forum Windows
    Réponses: 2
    Dernier message: 30/08/2004, 02h02

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