El control ColorButton proporciona una forma
cómoda de mostrar un color en un botón. Éste, al ser pulsado, abre un diálogo
de selección de color (ColorSelectionDialog). Resulta
útil para mostrar y establecer los colores en un diálogo de preferencias de
usuario. Un botón ColorButton se encarga de configurar,
mostrar y obtener el resultado del diálogo
ColorSelectionDialog. El control
ColorButton se crea con el constructor:
colorbutton = gtk.ColorButton(color=gtk.gdk.Color(0,0,0))
El color inicial se puede especificar con el parámetro
color, aunque se puede determinar posteriormente con
el método:
colorbutton.set_color(color)
El título del diálogo ColorSelectionDialog
mostrado al pulsar el botón se puede determinar y obtener con los
métodos:
colorbutton.set_title(title)
title = colorbutton.get_title()
La opacidad del color se determina utilizando el canal alpha. Los siguientes métodos obtienen y fijan la opacidad del color en un rango de 0 (transparente) a 65535 (opaco):
alpha = colorbutton.get_alpha()
colorbutton.set_alpha(alpha)
De forma predeterminada se ignora el valor alpha, dado que la
propiedad "use_alpha" es FALSE. El valor de dicha propiedad
"use_alpha" se puede alterar y obtener con los métodos:
colorbutton.set_use_alpha(use_alpha)
use_alpha = colorbutton.get_use_alpha()
Si "use_alpha" es TRUE (verdadero), entonces
el diálogo ColorSelectionDialog muestra un deslizador
que modifica la opacidad y muestra el color sobre un fondo en damero.
Es posible detectar los cambios en el color seleccionado conectándose a la señal "color-set", que se emite cada vez que la usuaria modifica el color. La signatura de la retrollamada es:
def color_set_cb(colorbutton, user_data):
El programa de ejemplo colorbutton.py ilustra el uso del botón
a ColorButton. Figura 16.8, “Ejemplo de Botón de Color - ColorButton” muestra
el programa en ejecución.
Al igual que ColorButton, el control Botón
de fuente FontButton es un control auxiliar que
proporciona una visualización de la fuente actualmente seleccionada y, cuando
se pulsa sobre él, abre un diálogo de selección de fuente
FontSelectionDialog. El botón
FontButton se encarga de configurar, mostrar y obtener
el resultado de la llamada al diálogo
FontSelectionDialog. Este control se crea con el
constructor:
fontbutton = gtk.FontButton(fontname=None)
donde fontname es una cadena que especifica
la fuente actual del diálogo FontSelectionDialog.
Por ejemplo, el nombre de la fuente podría ser 'Sans 12', 'Sans Bold 14', o
Monospace Italic 14'. Como mínimo es necesario indicar la familia y tamaño de
la fuente.
La fuente actual también se puede modificar y obtener con los métodos:
result = fontbutton.set_font_name(fontname)
fontname = fontbutton.get_font_name()
donde result devuelve
TRUE o FALSE para indicar si se pudo
cambiar la fuente con éxito. El control FontButton posee
una serie de métodos y propiedades asociadas que modifican la visualización
de la fuente actual en el botón FontButton. Las
propiedades "show-size" y "show-style" contienen valores booleanos que controlan
si se muestra el tamaño y estilo de la fuente en la etiqueta del botón. Los
métodos siguientes modifican y obtienen el valor de estas propiedades:
fontbutton.set_show_style(show_style) show_style = fontbutton.get_show_style() fontbutton.set_show_size(show_size) show_size = fontbutton.get_show_size()
De forma alternativa, es posible usar el tamaño y estilo actuales en la etiqueta del botón para ilustrar inmediatamente la selección de fuente. Para ello tenemos las propiedades "use-size" y "use-font" y sus métodos asociados:
fontbutton.set_use_font(use_font) use_font = fontbutton.get_use_font() fontbutton.set_use_size(use_size) use_size = fontbutton.get_use_size()
El uso de la fuente actual en la etiqueta resulta útil a pesar de
los cambios inevitables que produce en el tamaño del botón, sin embargo, no
ocurre lo mismo con el tamaño de la fuente, especialmente si se usan tamaños
muy grandes o muy pequeños. Obsérvese además que, si se cambian las propiedades
"use-font" o "use-size" a TRUE y posteriormente se vuelven
a cambiar a FALSE, se retiene el último valor de fuente y
tamaño visible. Por ejemplo, si "use-font" y "use-size" son
TRUE y la fuente actual es
Monospace Italic 20, entonces la etiqueta de
FontButton se muestra usando la fuente
Monospace Italic 20; si entonces cambiamos "use-font" y
"use-size" a FALSE y la fuente actual a
Sans 12 la etiquteta todavía mostrará la fuente
Monospace Italic 20. Use el programa de ejemplo fontbutton.py para ver cómo funciona todo
esto.
Finalmente, el título del diálogo de selección de fuente
FontSelectionDialog se puede modificar y obtener con
los métodos:
fontbutton.set_title(title)
title = fontbutton.get_title()
Al igual que un botón ColorButton, es posible
seguir los cambios en la fuente actual conectándose a la señal "font-set"
que se emite cuando la usuaria modifica la fuente. La signatura de la función
de retrollamada es la que sigue:
def font_set_cb(fontbutton, user_data):
El programa de ejemplo fontbutton.py ilustra el uso del control
FontButton. En él se pueden modificar las propiedades
"use-font", "use-size", "show-size" y "show-style" mediante botones biestado.
Figura 16.9, “Ejemplo de Botón de Fuente - FontButton” muestra el programa en ejecución.