Partage
  • Partager sur Facebook
  • Partager sur Twitter

Commande Linux +Tkinter

Incrustation d'une commande dans un Label Tkinter

    28 mars 2015 à 23:38:10

    Bonjour à vous, 

    Je viens vers vous car j'ai un petit problème, enfin assez important pour moi. 

    En effet j'aimerai pouvoir éxecuter une commande linux pour récupérer le pourcentage de disque qu'il me reste mais j'aimerai pouvoir mettre le résultat de la commande dans un label Tkinter

    Voici la commande que j'utilise pour pouvoir avoir le nombre de pourcent qui sont utilisés par la machine

    df -h |grep /dev/disk1 | cut -c 62-64 


    Voici le code python que j'ai essayer de faire

    # Importation des différentes librairies
    from tkinter import *
    import time
    import os
    import webbrowser
    from tkinter.messagebox import * # boîte de dialogue
    
    # Création de la fenêtre principale (main window)
    Identification = Tk()
    Identification.title('Identification requise')
    
    Identification.geometry("1440x900+300+300")
    
    def ops():
        os.system("df -h |grep /dev/disk1 | cut -c 62-64")
    
    Label3 = Label(Identification, text='yo', command= ops)
    Label3.pack()

    En espérant que quelqu'un pourra m'aider

    Merci d'avance

    Stoufine

    • Partager sur Facebook
    • Partager sur Twitter

    Allez faire un tour ca ne mange pas de pain ;) Ma Chaîne YOUTUBE

      29 mars 2015 à 9:25:57

      Alors tout d'abord je ne suis pas un expert en Linux, très loin de là. Mais conceptuellement, je ferais les choses différemment. Ecris plutôt un script Python qui prend en argument un chiffre et qui l'affiche dans un label Tkinter. En très simplifié:

      mon_utilitaire.py

      !/usr/bin/env python3

      -- coding: utf-8 --

      from tkinter import * import sys

      master = Tk()

      argument = sys.argv[1] label = Label(master, text=argument) label.grid()

      master.mainloop()

      </pre>

      Et c'est ici que je ne m'y connais pas trop, mais il me semble que tu peux faire un pipe pour passer en argument le résultat de ta commande.

      mon_utilitaire.py | df -h |grep /dev/disk1 | cut -c 62-64

      Mais même si ma commande en linux est incorrecte, je pense que tu saisis le principe.

      -
      Edité par Dan737 29 mars 2015 à 9:26:30

      • Partager sur Facebook
      • Partager sur Twitter
        29 mars 2015 à 12:07:28

        Tout d'abord merci à vous mais je n'ai pas trop compris comment je dois mettre ma commande dans mon fichier

        Merci

        • Partager sur Facebook
        • Partager sur Twitter

        Allez faire un tour ca ne mange pas de pain ;) Ma Chaîne YOUTUBE

          29 mars 2015 à 13:57:52

          Je conseillais de justement ne pas la mettre dans le fichier, mais de séparer le tout en deux opérations distinctes. D'un côté tu as un script Python qui affiche dans un label tkinter ce qu'on lui passe en argument. De l'autre tu as ta commande Linux qui te retourne l'espace disque restant.

          Si tu veux tout mettre dans ton script, il faut éviter os.system. Le mieux est d'utiliser un subprocess.

          import subprocess
          import shlex
          

          command = "df -h |grep /dev/disk1 | cut -c 62-64" arguments = shlex.split(command) output = check_output(arguments)

          </pre> De là il faudrait voir au juste ce que output contient. Il te suffit d'isoler l'information que tu veux et la mettre dans ton label. Mais note bien que ceci n'est dès lors plus cross-plateforme. Je pense que le script devrait vérifier qu'on est sur un OS adéquat.
          • Partager sur Facebook
          • Partager sur Twitter
            29 mars 2015 à 21:01:29

            Rebonjour donc voilà je voulais revenir vers vous car j'ai réfléchis un peu et je suis arrivé a un résultat pas trop mal

            j'ai créer une variable avec ma commande linux :

            spacedisk=os.popen("df -h |grep /dev/disk1 | cut -c 62-64", "r").read()

            donc ma fonction fonctionne ;) et j'arrive à l'afficher grâce a la commande du Label

            lab10 = Label(frame1, text=spacedisk).grid(row=2,column=1, sticky=W+E+N+S)

            mais c'est à ce moment que j'ai un petit problème.

            En fait comme vous pouvez le constater j'ai deux colonnes mais j'aimerais en avoir qu'une seule qui affiche

            Espace Disponible : 93% par exemple

            j'avais pensé à un code comme celui là mais ca ne fonctionne pas

            lab10 = Label(frame1, text"Espace Disponible", text=spacedisk).grid(row=2,column=0, sticky=W+E+N+S)

            Je n'arrive pas a trouver la solution sur internet et j'espère que vous pourrez m'aider 

            Je vous remercie de l'attention que vous portez à mon poste

            Stoufine



            • Partager sur Facebook
            • Partager sur Twitter

            Allez faire un tour ca ne mange pas de pain ;) Ma Chaîne YOUTUBE

            Commande Linux +Tkinter

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown