Choisissez un nombre en le saisissant ou en cliquant sur les boutons -/+ !
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)
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()
.
Dans cet exemple, les éléments suivants sont utilisés :
GtkSpinButton
GtkAdjustment