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 :

sortie de xterm


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut sortie de xterm
    bonjour

    grâce a ce forum j'ai réussie a faire ce programme en python

    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
    #! /usr/bind/python3.4
    # -*- utf8 -*-
     
    #importation bibliotheque graphique
    from tkinter import *
     
    #importation bibliotheque shlex
    import shlex
     
    #importation bibliotheque subprocess
    import subprocess
     
    #------------------------------creation de fonctions---------------------------
     
    # fonction pour quitter l'aplication
    def quit():
        fen1.destroy()
     
    # creation de la fonction yesping
    def yesping():
     
        # creation d'une variable globale 
        global proc
     
        # subprocess (lancer des processus parallèles avec des exécutables différents.
        # dans un environnement différent)la j'ouvre xterm dans linux avec shlex pour
        # les syntax
        proc = subprocess.Popen(shlex.split('xterm -e ping 127.0.0.1'))
     
        # modification du bouton et commande changer
        btn1.configure(text='STOP', command=noping)
     
        # modification du label (couleur changer)
        lab1.configure(bg='red', fg='white')
     
        # desactivation du bouton quitter pendan le ping
        btn2.configure(state=DISABLED)
     
     
     # creation de la fonction noping
    def noping():
     
        # creation d'une variable globale 
        global proc
     
        # equivalent a (si) en français veut dire si proc et terminer
        if proc:
            proc.terminate()
     
        # alor proc et none (et fini)    
        proc = None
     
        # modification du bouton et commande changer
        btn1.configure(text='GO', command=yesping)
     
        # modification du label (couleur changer)
        lab1.configure(bg='green', fg='white') 
     
        # activation du bouton quitter apres le ping
        btn2.configure(state=NORMAL)
     
    #------------------------------creation de la fenetres fen1--------------------
     
    # declaration de la fenetre
    fen1 = Tk()
     
    # titre dans la fenetre
    fen1.title('Ping-Party')
     
    # largeur hauteur et position de la fenetre
    fen1.geometry('600x300+200+200')
     
    # bloquer le redimensionement
    fen1.resizable(width=False, height=False)
     
    #----------------------------creation des boutons------------------------------
     
    # creation d'un bouton btn1
    btn1 = Button(fen1, text='GO', width=10,height=1, command=yesping)
     
    # placement du bouton btn1
    btn1.place(x=220, y=46)
     
    # creation du bouton btn2 (c'est le bouton quitter)
    btn2 = Button(fen1, text='Quitter', width=10, height=1, command=quit)
     
    # placement du bouton btn2
    btn2.place(x=260, y=250)
     
    #----------------------------creation des labels-------------------------------
     
    # creation du label lab1
    lab1=Label(fen1, text='Ping Locale IPV4', bg='green', fg='white')
     
    # placement du label lab1
    lab1.place(x=100, y=50)
     
    #----------------------------boucle final de la fenetre------------------------
     
    fen1.mainloop()
    C'est une interface graphique pour lancer des ping en boucle locale.

    Ma question.

    peut on utiliser un canevas pour intégré le résultat de la console dedans et comment je n’ai pas trouver de solution concret

    Merci pour les reponses

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Je vous donne les indices, mais c'est vous qui trouvez la solution :

    subprocess.Popen permet de récupérer stdout : https://docs.python.org/3/library/su...bprocess.Popen

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    import subprocess
    import shlex
     
    with subprocess.Popen(shlex.split("ifconfig"), stdout=subprocess.PIPE) as proc:
        print("stdout result:")
        print(bytes(proc.stdout.read()).decode("utf-8"))
    # end with
    Concernant tkinter :

    http://infohost.nmt.edu/tcc/help/pub...b/message.html

    http://infohost.nmt.edu/tcc/help/pub.../web/text.html

    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
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    #!/usr/bin/env python3
    # -*- coding: utf-8 -*-
     
    import subprocess
    import shlex
     
    from tkinter import *
     
    def show_stdout ():
     
        with subprocess.Popen(shlex.split("ifconfig"), stdout=subprocess.PIPE) as proc:
     
            display.configure(text=bytes(proc.stdout.read()).decode("utf-8"))
     
            btn_show.configure(text="Clear text", command=clear_display)
     
        # end with
     
    # end def
     
     
    def clear_display ():
     
        display.configure(text="")
     
        btn_show.configure(text="Show stdout", command=show_stdout)
     
    # end def
     
     
    root = Tk()
     
    display = Message(root)
     
    display.pack(expand=1, fill=BOTH, padx=10, pady=10)
     
    btn_show = Button(root)
     
    btn_show.pack()
     
    Button(root, text="Quit app", command=root.destroy).pack(pady=5)
     
    clear_display()
     
    root.mainloop()
    @+.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Technicien réseau
    Inscrit en
    Juin 2014
    Messages
    36
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien réseau

    Informations forums :
    Inscription : Juin 2014
    Messages : 36
    Points : 21
    Points
    21
    Par défaut sortie de xterm
    bonjour

    merci pour ta réponses je pense déjà a pas mal d'idées avec ton exemple

    mais le problème et de savoir comment faire défiler du temps réel (par exemple des ping local)
    dans un canevas si c'est bien un canevas qui faut utiliser

    je suis débutant et les exemple sur le net sont abstrait pour moi je me débrouille mieux avec des exemple visuel

    merci

Discussions similaires

  1. Réponses: 16
    Dernier message: 18/07/2003, 17h16
  2. Comment rediriger la sortie vers /dev/null
    Par dclink dans le forum C
    Réponses: 4
    Dernier message: 24/06/2003, 18h23
  3. [LG]Entrées et sorties redirigée
    Par Lady dans le forum Langage
    Réponses: 17
    Dernier message: 10/05/2003, 18h33
  4. Rediriger le plux de sortie
    Par Groove dans le forum C
    Réponses: 5
    Dernier message: 17/04/2003, 17h16
  5. récupérer la valeur de sortie d'un thread
    Par jakouz dans le forum Langage
    Réponses: 3
    Dernier message: 31/07/2002, 11h28

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