Los siguientes métodos cambian y leen el estilo asociado a un control:
widget.set_style(style)
style = widget.get_style()
|
La siguiente función:
style = get_default_style()
|
obtiene el estilo predeterminado.
Un estilo contiene la información gráfica que necesita un control para dibujarse a sí mismo en sus diferentes estados:
STATE_NORMAL # El estado durante la operación normal
STATE_ACTIVE # El control está activado, como cuando se pulsa un botón
STATE_PRELIGHT # El puntero del ratón está sobre el control
STATE_SELECTED # El control está seleccionado
STATE_INSENSITIVE # El control está desactivado
|
Un estilo contiene los siguientes atributos:
fg # una lista de 5 colores de primer plano, uno para cada estado
bg # una lista de 5 colores de fondo
light # una lista de 5 colores (claros), creados en el método set_style()
dark # una lista de 5 colores (oscuros), creados en el método set_style()
mid # una lista de 5 colores (medios), creados en el método set_style()
text # una lista de 5 colores para texto
base # una lista de 5 colores para bases
text_aa # una lista de 5 colores a medio camino entre text/base
black # el color negro
white # el color blanco
font_desc # la descripción de fuente pango predeterminada
xthickness #
ythickness #
fg_gc # una lista de 5 contextos gráficos (primer plano) - creados en el método set_style()
bg_gc # una lista de 5 contextos gráficos (fondo) - creados en el método set_style()
light_gc # una lista de 5 contextos gráficos (claros) - creados en el método set_style()
dark_gc # una lista de 5 contextos gráficos (oscuros) - creados en el método set_style()
mid_gc # una lista de 5 contextos gráficos (medios) - creados en el método set_style()
text_gc # una lista de 5 contextos gráficos (texto) - creados en el método set_style()
base_gc # una lista de 5 contextos gráficos (base) - creados en el método set_style()
black_gc # una lista de 5 contextos gráficos (negro) - creados en el método set_style()
white_gc # una lista de 5 contextos gráficos (blanco) - creados en el método set_style()
bg_pixmap # una lista de 5 pixmaps (de fondo)
|
Cada atributo se puede leer directamente de manera similar a style.black y style.fg_gc[gtk.STATE_NORMAL]. Todos los atributos son de sólo lectura excepto style.black, style.white, style.black_gc y style.white_gc.
Se puede copiar un estilo existente para su modificación posterior con el método:
new_style = style.copy()
|
que copia los atributos del estilo salvo las listas de contextos gráficos y las listas de colores light, dark y mid (claros, oscuros y medios).
El estilo actual se puede obtener con:
style = widget.get_style()
|
Para cambiar el estilo de un control (por ejemplo, para cambiar el color de primer plano), se deben usar los siguientes métodos de un control:
widget.modify_fg(state, color) # parámetros: estado, color
widget.modify_bg(state, color) # parámetros: estado, color
widget.modify_text(state, color) # parámetros: estado, color
widget.modify_base(state, color) # parámetros: estado, color
widget.modify_font(font_desc) # parámetro: descripción de la fuente
widget.set_style(style) # parámetro: estilo
|
Cuando se establece el estilo style se reservan los colores del estilo y se crean los contextos gráficos. La mayoría de los controles se redibujan también automáticamente tras cambiar de estilo. Si el estilo style es None entonces el control regresará al estilo predeterminado.
No todos los cambios del estilo afectan al control. Por ejemplo, el cambio del color de fondo de una etiqueta Label no tendrá efecto dado que el control Label no tiene una ventana propia gtk.gdk.Window. El color de fondo de una Etiqueta depende del color de fondo de su control padre. Pero es posible meter la Etiqueta en un control EventBox que añade una ventana y permite así cambiar su color de fondo. En la sección EventBox se proporciona un ejemplo de esta técnica.