Probando vte y colores de los controles

Rafael Villar Burke pachi en mmn-arquitectos.com
Vie Feb 25 13:29:53 CET 2005


Jordi Ivars wrote:

>Hola a todos, estoy probando el módulo vte, que permite crear terminales
>virtuales encasquetándoselas a cualquier widget que hagas en pygtk. La
>verdad es que es muy sencillo, basicamente asi:
>
>w = gtk.Window()
>t = vte.Terminal()
>t.fork_command("bash")
>w.add(t)
>w.show_all()
>
>Y luego le puedes pasar comandos con:
>
>t.feed_child("ls /etc \n") 
>
>y cosillas asi. Va muy bien y es facil de usar en lo que es su función
>principal, hacer una terminal.  
>El problema está en cambiar sus características, por ejemplo, el color
>de fondo. Mirando y probando entre sus modulos (con dir(vte)) y leyendo
>lo poco que hay por Internet (la mayoria tratando directamente sobre el
>vte en gtk), he sacado algunas cosillas que se le pueden hacer. Por
>ejemplo:
>
>micolor=gtk.gdk.color_parse("#FF0078")
>t.set_color_background(micolor)  #Solo coge colores gdk, si no le pones
>el gtk.gdk.color_*, no va
>
>Eso deberia cambiar el color de fondo a lo que dice micolor. Se lo
>traga, no da error, pero no cambia nada de nada. Intentar cambiar otras
>cosas como set_background_tint_color, set_color_foreground o
>set_color_dim tienen el mismo resultado.... nada. Ningún error, pero no
>hace nada. Ignora totalmente cualquier intento de cambiarle cualquier
>cosa.
>  
>
¡Está fenomenal lo que cuentas de vte!.
En cuanto a lo de los colores, ten cuidado porque además de 'backgound' 
está el color 'base', que probablemente sea el que usa el control vte 
aquí ('base' es el color base de la ventana X Window del control). Lo de 
los colores es un poco lioso en GTK+ porque está demasiado ligado a la 
forma de manejar los colores en las X, aunque aquí tienes algo más de 
información http://ometer.com/gtk-colors.html . Si te ves con ánimos a 
lo mejor hasta te animas a recoger esa información y añadir un capítulo 
al tutorial ;).

El siguiente trozo de código es para hacer el proceso contrario y poder 
usar un color del tema. Lo recomendable sería usar colores especificados 
en el tema (consulta gtk.Style para ver los estados de los controles) 
para que el aspecto de la aplicación se adapte al tema que tenga cada 
persona en su sistema (esto puede ser vital para gente que no distingue 
rojo y verde o problemas con temas de bajo contraste, etc... y no es 
solamente un problema de 'estética'):

def get_color_string(color):
    assert isinstance(color, gtk.gdk.Color)
    return "#%04X%04X%04X" % (color.red, color.green, color.blue)

temp_tv = gtk.TreeView()
bg_normal_color = 
get_color_string(temp_tv.get_style().base[gtk.STATE_NORMAL])
print bg_normal_color
del temp_tv

Saludos,

Pachi
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


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