Como controlar o gnome-terminal do Python scrypt?

5

Estou desenvolvendo um aplicativo no PyGtk e gostaria de iniciar um terminal gnome e enviar comandos para ele.

Meu usuário deve poder modificar o comando, ou talvez ignorar usando a seta para cima ... etc.

Eu consegui iniciar um terminal, mas não consigo descobrir como enviar comandos.

É assim que meu aplicativo é iniciado:

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()
    
por Anthony Scaife 27.06.2013 / 23:26

2 respostas

0

De acordo com os documentos em python, você deseja usar   %código% link

Eu recomendaria que você editasse seu comando do python antes de enviá-lo para outro processo. Por exemplo, exiba uma janela com o comando padrão e permita que o usuário o edite (ou cancele) antes de executá-lo. Além disso, "gnome-terminal" é provavelmente um exagero para isso, "/ bin / bash" deve ser suficiente.

Se isso não funcionar para você, você também pode tentar isso. (dependendo do que você está realmente executando a partir do terminal) Uma vez que você mencionou que os usuários poderiam editar o comando, seria uma boa idéia validar a entrada antes de executar.

command = ['ls','-l']
output = subprocess.check_output( command )
print( output )
    
por David 28.06.2013 / 00:37
0

Eu tive o mesmo problema.

Resolveu-o com o tmux, graças a esta resposta (copiada abaixo).

No terminal que deve receber o comando inicie o tmux com um identificador:

tmux new-session -s MYSES

Envie comandos para ele com:

tmux send-keys -t MYSES "ls -l"$'\n'
    
por naroom 05.06.2016 / 07:01