带有tkinter的Python os.system()

时间:2016-05-23 21:15:23

标签: python-2.7 tkinter os.system

我想将os.system()的输出从终端重定向到Tkinter GUI
有没有办法实现这个目标? 我尝试了它,但它只在终端上打印结果,但不在tkinter GUI上打印

2 个答案:

答案 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 ,而不是在产生所有输出之后复制。