# SpinButton (Python)

Marta Maria Casetti
mmcasetti@gmail.com 2012
Renvoie un entier ou un nombre à virgule flottante de l'utilisateur.

# SpinButton

Choisissez un nombre en le saisissant ou en cliquant sur les boutons -/+ !

# Code utilisé pour générer cet exemple

from gi.repository import Gtk import sys

class MyWindow(Gtk.ApplicationWindow):

def __init__(self, app): Gtk.Window.__init__(self, title="SpinButton Example", application=app) self.set_default_size(210, 70) self.set_border_width(5)

# an adjustment (initial value, min value, max value, # step increment - press cursor keys or +/- buttons to see!, # page increment - not used here, # page size - not used here) ad = Gtk.Adjustment(0, 0, 100, 1, 0, 0)

# a spin button for integers (digits=0) self.spin = Gtk.SpinButton(adjustment=ad, climb_rate=1, digits=0) # as wide as possible self.spin.set_hexpand(True)

# we connect the signal "value-changed" emitted by the spinbutton with the callback # function spin_selected self.spin.connect("value-changed", self.spin_selected)

# a label self.label = Gtk.Label() self.label.set_text("Choose a number")

# a grid to attach the widgets grid = Gtk.Grid() grid.attach(self.spin, 0, 0, 1, 1) grid.attach(self.label, 0, 1, 2, 1)

self.add(grid)

# callback function: the signal of the spinbutton is used to change the # text of the label def spin_selected(self, event): self.label.set_text( "The number you selected is " + str(self.spin.get_value_as_int()) + ".")

class MyApplication(Gtk.Application):

def __init__(self): Gtk.Application.__init__(self)

def do_activate(self): win = MyWindow(self) win.show_all()

def do_startup(self): Gtk.Application.do_startup(self)

app = MyApplication() exit_status = app.run(sys.argv) sys.exit(exit_status)

# Méthodes utiles pour un élément graphique BoutonDactivité

Il faut une valeur Gtk.Adjustment pour construire le Gtk.SpinButton. C'est la représentation d'une valeur avec une limite supérieure et une limite inférieure, avec des incréments d'étape et de page, avec une taille de page et elle se présente sous la forme `Gtk.Adjustment(valeur, inferieure, superieure, step_increment, page_increment, page_size)` où les champs sont du type `float` ; `step_increment` est l'incrément ou le décrément obtenu en agissant sur les touches du curseur ou sur les boutons du BoutonDactivité. Notez que les valeurs `page_increment` et `page_size` ne sont pas utilisés dans ce cas et qu'ils doivent être définis à `0`.

In line 23 the signal `"value-changed"` is connected to the callback function `spin_selected()` using `widget.connect(signal, callback function)`. See for a more detailed explanation.

Si vous voulez que la valeur du BoutonDactivité aille à la ligne quand elle dépasse les limites supérieure ou inférieure, définissez la fonction `set_wrap(True)` sur vrai. Le signal `"wrapped"` est alors émis quand cela se produit.

La méthode `set_digits(caracteres)` définit la précision d'affichage du BoutonDactivité, jusqu'à 20 caractères.

Pour avoir la valeur du BoutonDactivité sous forme d'un nombre entier, utilisez `get_value_as_int()`.

# Références API

Dans cet exemple, les éléments suivants sont utilisés :

GtkSpinButton

GtkAdjustment