La clase Range es bastante complicada internamente, pero, como todas las clases base de los controles, la mayoría de su complejidad solo te interesa si quieres trastear con ella. 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:
Es es el valor predeterminado. La señal "value_changed" se emite contínuamente, por ejemplo, cada vez qeu el deslizador se mueve incluso en las cantidades mas minúsculas.
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.
La señal "value_changed" se emite cuando el usuario suelta el botón del ratón, o si el deslizador para 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)
|
Obtener y cambiar el ajuste de un control de rango sobre la marcha se puede hacer, predeciblemente, 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 le pasas el adjustment que el range ya esté utilizando, da igual que le hayas cambiado alguno de sus cambios o no. Si le pasas 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 ha mencionado en la sección de ajustes, si deseas reutilizar el mismo Adjustment, cuando modifiques sus valores directamente, debes emitir la señal "changed" en él, como por ejemplo:
adjustment.emit("changed")
|