8.3. Métodos Comunes de los Rangos

La clase Range es bastante complicada internamente, pero, como todas las clases base de los controles, la mayoría de su complejidad solo resulta de interés si se quiere trastear con ellos. Además, la mayoría de los métodos y señales que define sólo son útiles al escribir controles derivados. Hay, en cualquier caso, unos cuantos métodos útiles que funcionarán con todos los controles de rango.

8.3.1. Establecimiento de la Política de Actualización

La "política de actualización" de un control de rango define en qué puntos de la interacción con el usuario se cambiará el campo de valor de su Adjustment y emitirá la señal "value_changed" en este Adjustment. Las políticas de actualización son:

UPDATE_CONTINUOUS

Es es el valor predeterminado. La señal "value_changed" se emite contínuamente, por ejemplo, cada vez que el deslizador se mueve, incluso en las cantidades mas minúsculas.

UPDATE_DISCONTINUOUS

La señal "value_changed" sólo se mite una vez que el deslizador ha parado de moverse y el usuario ha soltado el botón del ratón.

UPDATE_DELAYED

La señal "value_changed" se emite cuando el usuario suelta el botón del ratón, o si el deslizador deja de moverse durante un corto período de tiempo.

La política de actualización de un control de rango puede cambiarse con este método:

  range.set_update_policy(policy)

8.3.2. Obtención y Cambio de Ajustes

La obtención y cambio del ajuste de un control de rango se puede hacer sobre la marcha, como era predecible, con:

  adjustment = range.get_adjustment()

  range.set_adjustment(adjustment)

El método get_adjustment() devuelve una referencia al adjustment que está conectado al rango.

El método set_adjustment() no hace absolutamente nada si se le pasa el adjustment que el range ya esté utilizando, independientemente de que se le hayan cambiado alguno de sus campos o no. Si se le pasa un nuevo Adjustment, se perderá la referencia al antiguo si existía (posiblemente se destruirá), se conectarán las señales apropiadas al nuevo, y se recalculará el tamaño y/o posición del deslizador y se repintará si es necesario. Como se mencionó en la sección de ajustes, si se desea reutilizar el mismo Adjustment, cuando se modifiquen sus valores directamente se debe emitir la señal "changed" desde él, como por ejemplo:

  adjustment.emit("changed")