如何捕获命令的输出并将其放入标签中?

如何捕获命令的输出并将其放入标签中?

这是我正在开发的 Quickly 应用程序代码的摘录:

# Code for other initialization actions should be added here.

self.apachestart = self.builder.get_object("apachestart")
self.label1 = self.builder.get_object("label1")

def on_apachestart_clicked(self, widget):
    subprocess.call(['sudo', 'service', 'apache2', 'start'])   

现在,当我按下按钮启动 Apache(名为apachestart)时,它会在终端的标准输出中打印服务器已启动:

* Starting web server apache2  [ OK ] 

如何让终端的文本输出显示在标签中?

答案1

这实际上不是一个快速问题,而是一个纯 Python 问题。

看看Subprocess文档,尤其是check_output方法。

你可以做这样的事情(未经测试):

def on_apachestart_clicked(self, widget):
    result = subprocess.check_output(['sudo', 'service', 'apache2', 'start'])
    if result.split('[ ')[1].startswith('OK'):
        text = "Success!"
    else:
        text = "Failed!"
    self.label1.set_text(text)

也许还可以接到CalledProcessError电话。

相关内容