PyGTK - Classe SpinButton
Le widget SpinnButton, souvent appelé Spinner est un widget gtk.Entry avec des flèches haut et bas à sa droite. Un utilisateur peut saisir directement une valeur numérique ou incrémenter ou décrémenter en utilisant les flèches haut et bas. La classe gtk.SpinButton est héritée de la classe gtk.Entry. Il utilise un objet gtk.Adjustment avec lequel la plage et le pas de la valeur numérique dans la double flèche peuvent être limités.
Le widget SpinButton est créé à l'aide du constructeur suivant -
sp = gtk.SpinButton(adj, climb_rate, digits)
Ici, adj représente le gtk.Adjustment object controlling range, climb_rate est un facteur d'accélération et le nombre de décimales spécifié par des chiffres.
La classe gtk.SpinButton a les méthodes suivantes -
SpinButton.set_adjustment () - Ceci définit la propriété "ajustement".
SpinButton.set_digits () - Ceci définit la propriété "digits" sur la valeur pour déterminer le nombre de décimales à afficher par le bouton rotatif.
SpinButton.set_increments (step, page) - Ceci définit la valeur de pas qui a un incrément appliqué pour chaque pression du bouton gauche de la souris et la valeur de page qui est incrémentée pour chaque pression du bouton central de la souris.
SpinButton.set_range () - Ceci définit les valeurs minimales et maximales autorisées pour le bouton rotatif.
SpinButton.set_value () - Cela définit le bouton de rotation sur une nouvelle valeur par programme.
SpinButton.update_policy () - Les valeurs valides sont gtk.UPDATE_ALWAYS et gtk.UPDATE_VALID
SpinButton.spin (direction, increment = 1) - Cela incrémente ou décrémente la valeur de Spinner dans la direction spécifiée.
Voici les constantes de direction prédéfinies -
gtk.SPIN_STEP_FORWARD | avancer par step_increment |
gtk.SPIN_STEP_BACKWARD | en arrière par step_increment |
gtk.SPIN_PAGE_FORWARD | avancer par step_increment |
gtk.SPIN_PAGE_BACKWARD | en arrière par step_increment |
gtk.SPIN_HOME | passer à la valeur minimale |
gtk.SPIN_END | passer à la valeur maximale |
gtk.SPIN_USER_DEFINED | ajouter un incrément à la valeur |
SpinButton.set_wrap () - Si wrap a la valeur True, la valeur du bouton de rotation revient à la limite opposée lorsque la limite supérieure ou inférieure de la plage dépasse.
Le widget gtk.SpinButton émet les signaux suivants -
valeur de changement | Ceci est émis lorsque la valeur du bouton rotatif est modifiée par l'action du clavier |
contribution | Ceci est émis lorsque la valeur change. |
production | Ceci est émis lorsque la valeur d'affichage du bouton rotatif est modifiée. RetourTrue si le gestionnaire définit avec succès le texte et qu'aucun autre traitement n'est requis. |
valeur modifiée | Ceci est émis lorsque l'un des paramètres modifiant l'affichage du bouton rotatif est modifié. |
enveloppé | Ceci est émis juste après que le bouton rotatif passe de sa valeur maximale à sa valeur minimale ou vice-versa. |
Exemple
L'exemple suivant construit un simple Date Selectoren utilisant trois widgets SpinButton. Le sélecteur de jour applique un objet de réglage pour limiter la valeur entre 1 et 31. Le deuxième sélecteur concerne le nombre de mois 1 à 12. Le troisième sélecteur sélectionne la plage d'année 2000-2020.
Observez le code -
import gtk
class PyApp(gtk.Window):
def __init__(self):
super(PyApp, self).__init__()
self.set_title("SpinButton Demo")
self.set_size_request(300, 200)
self.set_position(gtk.WIN_POS_CENTER)
self.set_border_width(20)
vbox = gtk.VBox(False, 5)
hbox = gtk.HBox(True, 3)
lbl1 = gtk.Label("Date")
hbox.add(lbl1)
adj1 = gtk.Adjustment(1.0, 1.0, 31.0, 1.0, 5.0, 0.0)
spin1 = gtk.SpinButton(adj1, 0, 0)
spin1.set_wrap(True)
hbox.add(spin1)
lbl2 = gtk.Label("Month")
hbox.add(lbl2)
adj2 = gtk.Adjustment(1.0, 1.0, 12.0, 1.0, 5.0, 0.0)
spin2 = gtk.SpinButton(adj2, 0, 0)
spin2.set_wrap(True)
hbox.add(spin2)
lbl3 = gtk.Label("Year")
hbox.add(lbl3)
adj3 = gtk.Adjustment(1.0, 2000.0, 2020.0, 1.0, 5.0, 0.0)
spin3 = gtk.SpinButton(adj3, 0, 0)
spin3.set_wrap(True)
hbox.add(spin3)
frame = gtk.Frame()
frame.add(hbox)
frame.set_label("Date of Birth")
vbox.add(frame)
self.add(vbox)
self.connect("destroy", gtk.main_quit)
self.show_all()
PyApp()
gtk.main()
Lors de l'exécution, le code ci-dessus produira la sortie suivante -