9
votes

stdout à tkinter gui

Comment puis-je rediriger les données STDOUT sur un widget texte tkinter?


1 commentaires

Étape 1. Allez accepter des réponses à vos questions précédentes ...


3 Réponses :


14
votes

Vous devez créer une classe de type de fichier dont la méthode écrit écrit sur le widget Tkinter, puis effectuez sys.stsdout = . Voir Question .

Exemple (copié de la liaison): xxx

puis, dans votre widget Tkinter: xxx


2 commentaires

Salut! Pourriez-vous peut-être me fournir un exemple? Je suis très nouveau avec Python et j'ai du mal à faire fonctionner ça. Infiniment reconnaissant :)


La question liée a tout le code dont vous avez besoin, je pense. Vous devez créer votre propre version de la classe stdoutredirector comme c'est le cas, puis définissez sys.stdout = stdoutredirector . Je vais copier le code dans ma réponse.



4
votes

C'est une ancienne question, mais j'ai trouvé une solution que j'aimerais partager avec la communauté. Mon exemple de tuyaux une liste du répertoire de travail à une fenêtre TK. J'utilise Python 3.6 sous Windows 8. J'ai dirigé le code via Jupyter Notebook et Eclipse à l'aide de PYDEV.

import os
from tkinter import *
from subprocess import Popen, PIPE
root = Tk()
text = Text(root)
text.pack()

def ls_proc():
    return Popen(['ls'], stdout=PIPE)

with ls_proc() as p:
    if p.stdout:
        for line in p.stdout:
            text.insert(END, line)
    if p.stderr:
        for line in p.stderr:
            text.insert(END, line)

root.mainloop()


0 commentaires

1
votes
log_box_1 = tk.Text(root, borderwidth=3, relief="sunken")

with subprocess.Popen("ls -la", shell=True, stdout=subprocess.PIPE, bufsize=1, universal_newlines=True) as p:
            for line in p.stdout:
                log_box_1.insert(tk.END, line)
From here

0 commentaires