Как обрабатывать ввод данных пользователем с помощью модуля кода Python в терминале Python на основе Qt? - PullRequest
0 голосов
/ 22 января 2019

Я хочу разработать простой терминал на базе Qt Python 3, например, например. Python IDLE Я использую QTextEdit в качестве терминала. Я хочу, чтобы программа была легкой, поэтому я не хочу использовать / загружать модуль IPython (jupyter).

Для выполнения команд в основном я делаю:

from code import InteractiveInterpreter
from contextlib import redirect_stdout, redirect_stderr
import io

interpreter = InteractiveInterpreter()
command_string = '1+1'
out_io = io.StringIO()
err_io = io.StringIO()
with redirect_stdout(out_io), redirect_stderr(err_io):
    interpreter.runsource(command_string)
output = out_io.getvalue()
error = err_io.getvalue()
print('output:',output)

Это прекрасно работает с командами, которые не требуют ввода пользователя, но я застрял с такими командами, как ввод ('что-то'), справка () и т. Д. В этих случаях интерпретатор останавливает выполнение и ожидает ввода данных пользователем в терминале. , Но моя программа, которая должна обеспечивать ввод от QTextEdit, не знает об этом.

1) Как я могу определить, что интерпретатор ожидает ввода пользователя во время выполнения?

2) Как в этом случае программно передать ввод пользователя в интерпретатор, чтобы он мог продолжить выполнение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...