Comment puis-je rediriger les données STDOUT sur un widget texte tkinter? p>
3 Réponses :
Vous devez créer une classe de type de fichier dont la méthode code> écrit code> écrit sur le widget Tkinter, puis effectuez Exemple (copié de la liaison): p> puis, dans votre widget Tkinter: p> sys.stsdout =
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 code> comme c'est le cas, puis définissez
sys.stdout = stdoutredirector code>. Je vais copier le code dans ma réponse.
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()
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
Étape 1. Allez accepter des réponses à vos questions précédentes ...