我想启动一个QProcess,并使其在屏幕的特定区域显示/渲染。该过程是xterm(1)或rcvt(1)或gnome-terminal(1),我将rxvt(1)嵌入到主窗口中。
self.winIdStr = str(int(self.winId()))
self.process.start('rxvt', ['-embed', self.winIdStr , '-e', './goo'])
而且我想将rxvt(1)限制在QTextEdit区域。不幸的是,我不太了解Qt术语。所以我需要创建一个QFrame或其他东西来使它进行吗?
您必须创建一个要在其中放置终端的QWidget并传递该窗口小部件的winId():
from PyQt5 import QtCore, QtGui, QtWidgets
class Widget(QtWidgets.QWidget):
def __init__(self, parent=None):
super().__init__(parent)
self.container = QtWidgets.QWidget()
self.container.setFixedSize(600, 400)
lay = QtWidgets.QVBoxLayout(self)
lay.addWidget(QtWidgets.QLineEdit())
lay.addWidget(QtWidgets.QPushButton())
lay.addWidget(self.container)
self.process = QtCore.QProcess(self)
self.winIdStr = str(int(self.container.winId()))
self.process.start("rxvt", ["-embed", self.winIdStr, "-e", "./goo"])
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())