16.3. Controles Botón de Color y de Fuente (ColorButton y FontButton)

16.3.1. Control Botón de Color (ColorButton)

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.

Figura 16.8. Ejemplo de Botón de Color - ColorButton

Ejemplo de Botón de Color - ColorButton

16.3.2. Control Botón de Fuente (FontButton)

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.

Figura 16.9. Ejemplo de Botón de Fuente - FontButton

Ejemplo de Botón de Fuente - FontButton