如何将xterm / rcvt / gnome终端限制在屏幕的特定区域

问题描述 投票:0回答:1

我想启动一个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'])

但是我的主窗口看起来像这样:enter image description here

而且我想将rxvt(1)限制在QTextEdit区域。不幸的是,我不太了解Qt术语。所以我需要创建一个QFrame或其他东西来使它进行吗?

python pyqt pyqt5
1个回答
0
投票

您必须创建一个要在其中放置终端的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_())
© www.soinside.com 2019 - 2024. All rights reserved.