我想将os.system()的输出从终端重定向到Tkinter GUI
有没有办法实现这个目标?
我尝试了它,但它只在终端上打印结果,但不在tkinter GUI上打印
答案 0 :(得分:0)
是的,你可以用os.popen做到这一点。 代码:的强>
import os
from Tkinter import *
Outputfileobject=os.popen("your command")
Output=Outputfileobject.read()
Outputfileobject.close()
root=Tk()
root.title("Output text")
Text=Label(root,text=Output).pack()
root.mainloop()
替换"您的命令"使用您要执行的命令
os.popen 的行为类似于文件对象。
答案 1 :(得分:0)
但是os.popen.read()
仅在整个过程完成时返回。如果要同步进度和IO,请尝试以下操作:
def redirect_instant(inobj,outobj,after,*a,**k):
while True:
try:
data = inobj.read(2)
except EOFError:
break
except KeyboardInterrupt:
sys.stderr.write("\nError:user interrupted\n")
after(*a,**k)
if not data:
break
outobj.write(data)
after(*a,**k)
之后函数是在“复制流”过程结束时或在CTRL-C KeyboardInterrupt异常时执行的函数
inobj.read(2)
表示进程每次输出2个字节时,它都会复制到 outobj ,而不是在产生所有输出之后复制。