我写了一个应用程序,除其他外,启动一些“后端”进程来做一些事情。 这些子过程很可能会失败或出现意外行为,因为它们必须在相当困难的条件下运行,所以我更愿意完全控制它们给操作员。
注意:我正在使用基于subprocess
模块的类而不是QProcess
来运行这些进程,以便在正在运行的进程中拥有更多控制功能。
目前,我正在使用一个QPlainTextEdit
小部件,我从子进程中添加了标准输出/错误,还有一些按钮可以快速发送一些常见信号(INT,STOP,CONT,KILL,.. ),但是:
所以:有没有人知道我可以用来完成这些需求的东西?
我发现qtermwidget但它似乎更倾向于处理shell进程(并且Python绑定似乎只让你运行/bin/bash
)而不是与已经存在的进程I / O进行通信。
答案 0 :(得分:4)
这样的事情有帮助吗?
#!/usr/bin/env python
#-*- coding:utf-8 -*-
import sys
from PyQt4.QtCore import *
from PyQt4.QtGui import *
class embterminal(QWidget):
def __init__(self):
QWidget.__init__(self)
self.process = QProcess(self)
self.terminal = QWidget(self)
layout = QVBoxLayout(self)
layout.addWidget(self.terminal)
self.process.start(
'xterm',['-into', str(self.terminal.winId())])
# Works also with urxvt:
#self.process.start(
#'urxvt',['-embed', str(self.terminal.winId())])
if __name__ == "__main__":
app = QApplication(sys.argv)
main = embterminal()
main.show()
sys.exit(app.exec_())
答案 1 :(得分:0)
你可以试试QConsole(http://qconsole.sourceforge.net/)。我没有使用它,但它看起来像你正在寻找的东西。