Foros del Web » Programando para Internet » Python »

Ver salida terminal -- PyGTK

Estas en el tema de Ver salida terminal -- PyGTK en el foro de Python en Foros del Web. ¡Hola! ¿Cómo puedo ver la salida del terminal con PyGTK ? Gracias...
  #1 (permalink)  
Antiguo 17/02/2011, 21:36
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 14 años, 1 mes
Puntos: 59
Pregunta Ver salida terminal -- PyGTK

¡Hola!
¿Cómo puedo ver la salida del terminal con PyGTK?

Gracias
  #2 (permalink)  
Antiguo 17/02/2011, 22:48
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ver salida terminal -- PyGTK

Tu pregunta es ambigua.
¿Quieres ver el stdout y stderr de tu script hecho en python que utiliza pygtk?
¿Quieres ver el stdout y stderr de otro programa a través de un script en python que utilice pygtk?
¿Que exactamente quieres hacer?
  #3 (permalink)  
Antiguo 18/02/2011, 12:15
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 14 años, 1 mes
Puntos: 59
Gracias por la respuesta.
Pues algo como ... cuando instalas algo, se puede ver lo que hace en el terminal, o cuando instalas las actualizaciones.
En el programa que tengo, ejecuto un comando en el terminal con os.system, pero lo hace en segundo plano, no veo la salida del terminal.
Querría ver el terminal en el mismo programa, para que no sea necesario abrir el programa al lado del terminal ("Ejecutar en el terminal").

__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111

Última edición por _Adrian_; 18/02/2011 a las 12:22
  #4 (permalink)  
Antiguo 19/02/2011, 00:29
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ver salida terminal -- PyGTK

En ese caso necesitas subprocess:
Código Python:
Ver original
  1. import subprocess
  2. p = subprocess.Popen(["dir"], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  3. stdout, stderr = p.communicate()
  4. print stdout
  5. print stderr
  #5 (permalink)  
Antiguo 19/02/2011, 14:30
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 14 años, 1 mes
Puntos: 59
Gracias, pero ¿cómo lo pongo para que se vea en el GUI?

__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111
  #6 (permalink)  
Antiguo 19/02/2011, 14:32
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ver salida terminal -- PyGTK

Lo pones el stdout en un TextBox y el stderr en otro TextBox.
  #7 (permalink)  
Antiguo 20/02/2011, 13:01
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 14 años, 1 mes
Puntos: 59
Gracias ... pero tengo un problema.
Tengo esto:
Código Python:
Ver original
  1. #... ... ...
  2. class Ejemplo:
  3.     def acciones(self,widget,data):
  4.         comando = "%s" % data
  5.         c = subprocess.Popen([comando], shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE)
  6.         stdout,stderr = c.communicate()
  7.  
  8.     def __init__(self):
  9.         #... ... ...
  10.         boton1 = gtk.Button("Boton 1")
  11.         boton1.connect("clicked",self.acciones,"comando_terminal")
  12.  
  13.         boton2 = gtk.Button("Boton 2")
  14.         boton2.connect("clicked",self.acciones,"otro_comando_terminal")
  15.  
  16.        # y mas botones ...
  17.  
  18.         buffer = gtk.TextBuffer()
  19.         textbox = gtk.TextView(buffer)
  20.         buffer.set_text(stdout)
  21.  
  22.        #... ... ...
Pero me da este error: "NameError: global name 'stdout' is not defined".
No reconoce la variable porque está en otra función, ¿no?

¿Cómo puedo hacer para que la reconozca?
__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111

Última edición por _Adrian_; 20/02/2011 a las 14:42
  #8 (permalink)  
Antiguo 20/02/2011, 15:08
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ver salida terminal -- PyGTK

Código Python:
Ver original
  1. def acciones(self,widget,data):
  2.     #...
  3.     stdout,stderr = c.communicate()
  4.     self.buffer.set_text(stdout)
  5.  
  6.  
  7. def __init__(self):
  8.     #...
  9.     self.buffer = gtk.TextBuffer()
  10.     #...
  11.     self.buffer.set_text("")
  12.     #...
  #9 (permalink)  
Antiguo 20/02/2011, 15:47
 
Fecha de Ingreso: septiembre-2010
Mensajes: 525
Antigüedad: 14 años, 1 mes
Puntos: 59
¡Muchas gracias!

__________________
01011111 01000001 01100100 01110010 01101001 01100001 01101110 01011111
  #10 (permalink)  
Antiguo 02/03/2011, 14:37
 
Fecha de Ingreso: enero-2010
Ubicación: Madrid/España
Mensajes: 89
Antigüedad: 14 años, 10 meses
Puntos: 3
Respuesta: Ver salida terminal -- PyGTK

Pero hay alguna forma de que se actualice constantemente, es decir, que cada vez que salga una línea, que se vea. Lo he probado sustituyendo "dir" por "sudo apt-get update". La salida no se mostraba hasta que los repositorios no habían terminado de actualizarse y al terminar muestra todas las líneas de golpe. ¿Hay alguna forma de hacer esto y que actualice cada x milisegundos o algo así?
  #11 (permalink)  
Antiguo 02/03/2011, 16:03
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Ver salida terminal -- PyGTK

Necesitas entender las entradas y salidas estándar y después leer esto

Etiquetas: pygtk, salida, terminal
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:06.