Виртуальный терминал Python в PyGtk - PullRequest
0 голосов
/ 11 октября 2018

Я пытаюсь встроить оболочку Python в приложение PyGtk.Мне удалось встроить bash-терминал, используя Vte.Terminal, и я хотел бы повторить то же поведение, но с оболочкой python3, которая может обращаться к объектам моего приложения.Если я использую Vte.Terminal с /usr/bin/python3.5 в качестве дочернего процесса, я не могу получить к нему доступ, поскольку это другой процесс.

Я попытался реализовать его с помощью Vte.Terminal бездочерний процесс и действует на пользовательский ввод самостоятельно.Я объединяю видимые символы в строку, а затем выполняю команды, вызывая 'exec (command)'.К сожалению, это также не позволяет мне получить доступ к чему-либо.Если я определяю переменную и затем использую ее в следующей строке, переменная неизвестна.Я предполагаю, что это локально по отношению к точке, где exec был вызван в первый раз, и, поскольку функция, которая обрабатывает ввод, вызывается снова со второй строкой, которая будет использовать эту переменную, она выходит за рамки.

Кроме того,реализация этой функциональности, подобной этой, была бы большой работой, так как мне пришлось бы реализовать каждый специальный символ, перемещение курсора, историю команд ..., все вещи, которые прекрасно работают в Vte.Terminal с дочерним процессом.

Есть ли какой-либо вариант в Vte.Terminal, который я мог бы использовать?

ОБНОВЛЕНИЕ: просто чтобы посмотреть, что произойдет, я сделал следующее: я разбудил свой процесс и подключил виртуальный терминал нового процесса к виджету VTE.Это прекрасно работает.Очевидно, что я не могу обмениваться какими-либо новыми данными, потому что интерпретатор снова запускается в новом процессе.Можно ли как-то сделать это с темами?Есть ли способ подключить виртуальный терминал потоков к VTE?

...