1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| import gtk,pygtk
import subprocess
import gobject
class CommandTextView(gtk.TextView):
def __init__(self,command):
super(CommandTextView,self).__init__()
self.command = command
def run(self):
proc = subprocess.Popen(self.command,shell=True,stdout=subprocess.PIPE)
gobject.io_add_watch(proc.stdout,
gobject.IO_IN,
self.write_to_buffer)
def write_to_buffer(self, fd, condition):
if condition == gobject.IO_IN:
char = fd.read(1)
buf = self.get_buffer()
buf.insert_at_cursor(char)
return True
else:
return False
def test():
win=gtk.Window()
win.set_size_request(300,300)
win.connect('delete-event',lambda w,e : gtk.main_quit())
ctv=CommandTextView("wget http://download-origin.cdn.mozilla.net/pub/mozilla.org/firefox/releases/1.0.5/source/firefox-1.0.5-source.tar.bz2")
win.add(ctv)
win.show_all()
ctv.run()
gtk.main()
if __name__=='__main__': test() |
Partager