tkinter récupérer le résultat d'une commande shell dans un widget

linux ,python3

Le problème exposé dans ce sujet a été résolu.

Bonjour débutant avec tkinter.

je cherche le moyen, en cliquant sur un bouton, d’afficher dans un tk.Text(fenetre) le résultat d’un retour de os.system("ls -la")

avez-vous un exemple ? Merci de votre aide

+0 -0

Salut,

ls n’est pas une commande shell, mais un programme à part entière. Pour récupérer la sortie d’un programme, tu peux utiliser subprocess.run avec l’argument capture_output.

Cela dit, si ton but est de lister le contenu d’un dossier, tu as intérêt à passer par Path.iterdir : ce sera idiomatique, portable, et plus économe que de lancer tout un process juste pour ça.

merci de tes explications et remarques.

j’ai rajouté

import subprocess 

et testé cette ligne :

Text1.insert ("0.0",subprocess.run(["df", "-h"], capture_output=True))

ça s’affiche tout dans Text1 mais pas du tout formaté.

merci de vos conseils

+0 -0

J’ai pris la peine de mettre des liens vers la documentation parce qu’elle contient des informations utiles. En particulier, elle précise que run renvoie un CompletedProcess, dont l’attribut stdout devrait t’intéresser. L’argument text de run pourrait aussi t’être utile selon ce que tu souhaites faire.

Bonjour

Oui merci d’avoir pris le temps de me répondre et d’avoir mis des liens vers de la documentation.

Bien entendu j’avais essayé stdout et divers paramètres mais je n’avais pas réussi à mettre en forme.

Je vais encore chercher plus précisement.

Bien à toi

+0 -0

par exemple dans une console si je tapre df -h j’obtiens ceci

Sys. de fichiers Taille Utilisé Dispo Uti% Monté sur
udev               1,3G       0  1,3G   0% /dev
tmpfs              270M    1,4M  269M   1% /run
/dev/sda1           41G     14G   25G  36% /
tmpfs              1,4G       0  1,4G   0% /dev/shm
tmpfs              5,0M     12K  5,0M   1% /run/lock
/dev/sda2          134G     98G   30G  77% /home
tmpfs              270M    2,5M  268M   1% /run/user/1000

avec le code python (j’ai essayé de changer des paramètres mais je n’arrive pas à forcer les retours à la ligne):

subprocess.run(["df", "-h","/dev/null"], capture_output=True,encoding="utf-8",shell=True,text=None,universal_newlines=False)

copie ecran
copie ecran
+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte