这是我正在开发的 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
电话。