【问题标题】:How to get output of terminal commands to python gui text area using subprocess?如何使用子进程将终端命令输出到 python gui 文本区域?
【发布时间】:2018-10-09 15:42:24
【问题描述】:
   import subprocess
   subprocess.call('gcc a.c', shell=True)
   subprocess.call('./a.out', shell=True)

我正在执行这个语句来编译一个“.c”文件。我在后端得到了输出。

但是如何在 python 文本区域中获取该 C 程序的输出(我使用的是 tkinter,python 2.7)?

另一个问题是,我无法扫描输入数据,但只能编译不接受输入数据的程序。

【问题讨论】:

    标签: python python-2.7 tkinter subprocess


    【解决方案1】:

    您可以使用 subprocess.Popen 并将标准输出重定向到 PIPE 并测试只需在您设置的文本区域调用中读取标准输出例如 complie.stdout.readlines()

    import subprocess
    
    complie = subprocess.Popen('gcc a.c', stdout=subprocess.PIPE,shell=True)
    runprog  = subprocess.Popen('./a.out', stdout=subprocess.PIPE,shell=True)
    
    print (complie.stdout.readlines())
    print (runprog.stdout.readlines())
    

    您可以将complie.stdout.readlines() 放在文本区域集调用中,而不是打印出来

    示例代码:

    import subprocess
    from tkinter import *
    
    #Example on Windows
    
    root = Tk()
    T = Text(root, height=2, width=200)
    T.pack()
    
    complie = subprocess.Popen('ping google.com', stdout=subprocess.PIPE,stdin=subprocess.PIPE ,shell=True)
    complie.wait()
    outcome = complie.stdout.readlines()
    print(outcome)
    T.insert(END, outcome)
    mainloop()
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-15
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 2017-10-21
      相关资源
      最近更新 更多