Как управлять gnome-терминалом из Python scrypt?

Я занимаюсь разработкой приложения на PyGtk и хотел бы запустить терминал gnome и вывести на него команды.

Мой пользователь затем сможет изменить команду или, возможно, проигнорировать, используя стрелку вверх ... и т. Д.

Мне удалось запустить терминал, но я не могу понять, как отправлять команды.

Вот как начинается мое приложение:

class App(Gtk.Window):

    def __init__(self):

        Gtk.Window.__init__(self)

        process=subprocess.Popen(["gnome-terminal", "--class=App", "--name=app"], shell=False, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
        response,error=process.communicate()
5
задан 28 June 2013 в 01:56

2 ответа

У меня была такая же проблема.

Решено с помощью tmux, благодаря этому ответу (скопировано ниже).

В терминале, который должен получить команду, запустите tmux с идентификатором:

tmux new-session -s MYSES

Отправьте ему команды с:

tmux send-keys -t MYSES "ls -l"\n'
0
ответ дан 28 June 2013 в 01:56

Согласно документации по Python, вы хотите использовать Popen.communicate(input=None) http://docs.python.org/2/library/subprocess.html#popen-objects

I рекомендую вам отредактировать вашу команду из python перед отправкой другому процессу. Например, отобразите окно с командой по умолчанию и разрешите пользователю редактировать (или отменять) его перед выполнением. Кроме того, «gnome-Terminal», вероятно, излишне для этого, «/ bin / bash» должно быть достаточно.

Если это не работает для вас, вы также можете попробовать это. (в зависимости от того, что вы в действительности запускаете из терминала) Поскольку вы упомянули, что пользователи могут редактировать команду, было бы неплохо проверить ввод перед запуском.

command = ['ls','-l']
output = subprocess.check_output( command )
print( output )
0
ответ дан 28 June 2013 в 01:56

Другие вопросы по тегам:

Похожие вопросы: