如何将标准输出数据重定向到tkinter文本控件?标准输出到tkinter GUI
回答
您需要制作一个类似文件的类,它的write
方法会写入Tkinter小部件,然后执行sys.stdout = <your new class>
。请参阅this question。
示例(从链接复制):
class IORedirector(object):
'''A general class for redirecting I/O to this Text widget.'''
def __init__(self,text_area):
self.text_area = text_area
class StdoutRedirector(IORedirector):
'''A class for redirecting stdout to this Text widget.'''
def write(self,str):
self.text_area.write(str,False)
,然后在你的Tkinter的部件:
# To start redirecting stdout:
import sys
sys.stdout = StdoutRedirector(self)
# (where self refers to the widget)
# To stop redirecting stdout:
sys.stdout = sys.__stdout__
嗨!你能否给我提供一个例子?我对python非常感兴趣,而且我正在努力实现这个目标。非常感谢:) – FLX 2010-07-26 18:35:17
我认为,链接的问题具有您需要的所有代码。你需要制作你自己的'StdoutRedirector'类版本,然后设置'sys.stdout = StdoutRedirector'。我会将代码复制到我的答案中。 – katrielalex 2010-07-27 08:32:47
这是一个老问题,但我发现,我想一个解决方案与社区分享。我的例子将工作目录列表管理到Tk窗口。我在Windows 8上使用Python 3.6。我使用Pydev通过Jupyter Notebook和Eclipse运行代码。
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 dir_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()
- 1. Python - Tkinter标签输出?
- 2. 如何回显标准输出到标准输出
- 3. 共享库输出到标准输出
- 4. 写到标准输出
- 5. 流标准输出到s3
- 6. CreateProcessWithLogonW得到标准输出
- 7. Python,Tkinter,Subprocess-获取标准输出并将其插入到文本
- 8. 标准输出到Python中的文件
- 9. 是否有可能输出到监视流而不是标准输入,标准输出和标准错误? (python)
- 10. Logstash输出:标准输出
- 11. 如何处理标准输入到标准输出在PHP?
- 12. 破折号重定向从标准输入到标准输出
- 13. Ç标准输出到标准输入实时
- 14. 从Java的标准输入到标准输出的GZipping
- 15. 重定向进程标准输入和标准输出到netcat
- 16. C:重定向标准输入,标准输出到管道
- 17. Linux命令标准输出到标准输入?
- 18. 在GUI界面中输出打印输出Tkinter Python
- 19. 输出文件到标准输入
- 20. 从标准输入和输出读取到标准输出是什么意思?
- 21. 如何标准输出重定向到一个Tkinter的文本小
- 22. Linux的标准输入,标准输出,标准错误
- 23. 实时输出到Tkinter GUI的运行过程
- 24. 如何发送python多进程输出到Tkinter gui
- 25. 从标准输出
- 26. fflush标准输出
- 27. 标准输入/输出流
- 28. Python - TkInter图标和GUI
- 29. 发送JVM -verbose输出到标准错误而不是标准输出
- 30. PowerShell的保存标准输出和显示标准输出
第1步。去接受一些你以前的问题的答案... – 2010-07-26 12:41:17