简短的回答: Qt5不提供使用终端的功能,因此您将不得不使用QProcess。
TL; DR
建议作为解决方案的EmbTerminal类是一个小部件,因此您必须使用添加它
addTab(),请记住,您必须已经安装了
urxvt终端(如果要检查
urxvt在终端中运行的安装)
import sysfrom PyQt5 import QtCore, QtWidgetsclass EmbTerminal(QtWidgets.QWidget): def __init__(self, parent=None): super(EmbTerminal, self).__init__(parent) self.process = QtCore.QProcess(self) self.terminal = QtWidgets.QWidget(self) layout = QtWidgets.QVBoxLayout(self) layout.addWidget(self.terminal) # Works also with urxvt: self.process.start('urxvt',['-embed', str(int(self.winId()))]) self.setFixedSize(640, 480)class mainWindow(QtWidgets.QMainWindow): def __init__(self, parent=None): super(mainWindow, self).__init__(parent) central_widget = QtWidgets.QWidget() lay = QtWidgets.QVBoxLayout(central_widget) self.setCentralWidget(central_widget) tab_widget = QtWidgets.QTabWidget() lay.addWidget(tab_widget) tab_widget.addTab(EmbTerminal(), "EmbTerminal") tab_widget.addTab(QtWidgets.QTextEdit(), "QTextEdit") tab_widget.addTab(QtWidgets.QMdiArea(), "QMdiArea")if __name__ == "__main__": app = QtWidgets.QApplication(sys.argv) main = mainWindow() main.show() sys.exit(app.exec_())


