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.
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) |
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")
|