Я создаю своего рода терминал в pyqt5, из которого вы можете запустить файл python из него, и он покажет вам вывод.
это мой код
import sys
from subprocess import Popen,PIPE
from PyQt5.QtWidgets import (QApplication,QWidget,QVBoxLayout,
QHBoxLayout,QPlainTextEdit,QLabel,
QLineEdit)
class Terminal(QWidget):
def __init__(self):
super().__init__()
lay = QHBoxLayout()
layout = QVBoxLayout()
self.setLayout(layout)
self.out = QPlainTextEdit()
self.inLbl = QLabel('')
self.inBar = QLineEdit()
lay.addWidget(self.inLbl)
lay.addWidget(self.inBar)
layout.addWidget(self.out)
layout.addLayout(lay)
def runFile(self,url):
self.out.clear()
p = Popen(['python',url],stdout = PIPE,stderr = PIPE)
stdout,stderr = p.communicate()
err = stderr.decode()
self.out.insertPlainText(stdout.decode())
if err != '':
self.out.insertPlainText('\n'+stderr.decode())
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Terminal()
window.runFile('test.py')
window.show()
sys.exit(app.exec_())
и это test.py:
print('Hello '+name+'.')
Я хочу, чтобы, когда терминал запускает файл, self.inLbl изменяется на строку входной команды, а self.inBar получает ввод и возвращает ввод, а self.out записывает текст self.inLbl. плюс входная строка. Как я могу это сделать?