salida cdrecord en textview

pachi en mmn-arquitectos.com pachi en mmn-arquitectos.com
Vie Ene 28 00:36:14 CET 2005


> Hola, soy nuevo en la lista y en el mundo de python.
> Estoy haciendo (intentando!!) una pequeña aplicación con glade2 + python
> que necesita grabar datos en un CD.
> Me gustaría que la salida del cdrecord en lugar de verse en la consola,
> lo hiciera en un textview. He buscado en google pero no encuentro
> ninguna ayuda de cómo hacerlo..
> Podríais guiarme un poquito?
> Muchas gracias.

Tienes información en castellano, actualizada hasta la última versión
estable de pygtk, en el tutorial de pygtk [1]. El tutorial es buenísimo y
explica claramente una gran parte de los patrones usados en pygtk. Échale
un vistazo si no lo has hecho. ¡Merece la pena!.

Sobre el tema por el que preguntas hay información específica en el
capítulo del tutorial dedicado al control de vista de texto [2].

Lo que tendrías que hacer, en líneas generales, es:

a) Crear una vista de texto (gtk.TextView)
b) Meter el control en una ventana con desplazamiento (gtk.ScrolledWindow)
por si son necesarias las barras de desplazamiento al introducir mucho
texto.
c) Obtener el buffer de la vista de texto (gtk.TextBuffer) para tener
acceso a los contenidos y poder manipularlo a través de él.
d) Crear un iterador de texto (gtk.TextIter) que apunte al final del buffer.
e) Insertas las veces que sea necesario el texto usando una cadena y el
iterador. Esa cadena la puedes obtener con las funciones a las que te
refirió Marcos.

Aquí tienes un mini-ejemplo, por si te sirve de guión.

<--inicio ejemplo-->

#!/usr/bin/env python

import os
import pygtk
pygtk.require('2.0')
import gtk

sw = gtk.ScrolledWindow()
sw.set_policy(gtk.POLICY_AUTOMATIC, gtk.POLICY_AUTOMATIC)
textview = gtk.TextView()
buffer = textview.get_buffer()
sw.add(textview)

stdin, stdouterr = os.popen4('ls %s' % os.getcwd())
string = stdouterr.read()
enditer = buffer.get_end_iter()
buffer.insert(enditer, string)
buffer.insert(buffer.get_end_iter(), "Fin")

win = gtk.Window()
win.connect('delete-event', gtk.main_quit)
win.add(sw)
win.show_all()
gtk.main()

<--fin ejemplo-->

Suerte,

Pachi

[1] http://www.pygtk.org/pygtk2tutorial-es/index.html
[2] http://www.pygtk.org/pygtk2tutorial-es/ch-TextViewWidget.html




Más información sobre la lista de distribución Python-es