#!/usr/bin/env python # example spinbutton.py import gtk class SpinButtonExample: def toggle_snap(self, widget, spin): spin.set_snap_to_ticks(widget.active) def toggle_numeric(self, widget, spin): spin.set_numeric(widget.active) def change_digits(self, widget, spin, spin1): spin1.set_digits(spin.get_value_as_int()) def get_value(self, widget, data, spin, spin2, label): if data == 1: buf = "%d" % spin.get_value_as_int() else: buf = "%0.*f" % (spin2.get_value_as_int(), spin.get_value_as_float()) label.set_text(buf) def __init__(self): window = gtk.GtkWindow(gtk.WINDOW_TOPLEVEL) window.connect("destroy", gtk.mainquit) window.set_title("Spin Button") main_vbox = gtk.GtkVBox(gtk.FALSE, 5) main_vbox.set_border_width(10) window.add(main_vbox) frame = gtk.GtkFrame("Not accelerated") main_vbox.pack_start(frame, gtk.TRUE, gtk.TRUE, 0) vbox = gtk.GtkVBox(gtk.FALSE, 0) vbox.set_border_width(5) frame.add(vbox) # Day, month, year spinners hbox = gtk.GtkHBox(gtk.FALSE, 0) vbox.pack_start(hbox, gtk.TRUE, gtk.TRUE, 5) vbox2 = gtk.GtkVBox(gtk.FALSE, 0) hbox.pack_start(vbox2, gtk.TRUE, gtk.TRUE, 5) label = gtk.GtkLabel("Day :") label.set_alignment(0, 0.5) vbox2.pack_start(label, gtk.FALSE, gtk.TRUE, 0) adj = gtk.GtkAdjustment(1.0, 1.0, 31.0, 1.0, 5.0, 0.0) spinner = gtk.GtkSpinButton(adj, 0, 0) spinner.set_wrap(gtk.TRUE) spinner.set_shadow_type(gtk.SHADOW_OUT) vbox2.pack_start(spinner, gtk.FALSE, gtk.TRUE, 0) vbox2 = gtk.GtkVBox(gtk.FALSE, 0) hbox.pack_start(vbox2, gtk.TRUE, gtk.TRUE, 5) label = gtk.GtkLabel("Month :") label.set_alignment(0, 0.5) vbox2.pack_start(label, gtk.FALSE, gtk.TRUE, 0) adj = gtk.GtkAdjustment(1.0, 1.0, 12.0, 1.0, 5.0, 0.0) spinner = gtk.GtkSpinButton(adj, 0, 0) spinner.set_wrap(gtk.TRUE) spinner.set_shadow_type(gtk.SHADOW_ETCHED_IN) vbox2.pack_start(spinner, gtk.FALSE, gtk.TRUE, 0) vbox2 = gtk.GtkVBox(gtk.FALSE, 0) hbox.pack_start(vbox2, gtk.TRUE, gtk.TRUE, 5) label = gtk.GtkLabel("Year :") label.set_alignment(0, 0.5) vbox2.pack_start(label, gtk.FALSE, gtk.TRUE, 0) adj = gtk.GtkAdjustment(1998.0, 0.0, 2100.0, 1.0, 100.0, 0.0) spinner = gtk.GtkSpinButton(adj, 0, 0) spinner.set_wrap(gtk.FALSE) spinner.set_shadow_type(gtk.SHADOW_IN) spinner.set_usize(55, 0) vbox2.pack_start(spinner, gtk.FALSE, gtk.TRUE, 0) frame = gtk.GtkFrame("Accelerated") main_vbox.pack_start(frame, gtk.TRUE, gtk.TRUE, 0) vbox = gtk.GtkVBox(gtk.FALSE, 0) vbox.set_border_width(5) frame.add(vbox) hbox = gtk.GtkHBox(gtk.FALSE, 0) vbox.pack_start(hbox, gtk.FALSE, gtk.TRUE, 5) vbox2 = gtk.GtkVBox(gtk.FALSE, 0) hbox.pack_start(vbox2, gtk.TRUE, gtk.TRUE, 5) label = gtk.GtkLabel("Value :") label.set_alignment(0, 0.5) vbox2.pack_start(label, gtk.FALSE, gtk.TRUE, 0) adj = gtk.GtkAdjustment(0.0, -10000.0, 10000.0, 0.5, 100.0, 0.0) spinner1 = gtk.GtkSpinButton(adj, 1.0, 2) spinner1.set_wrap(gtk.TRUE) spinner1.set_usize(100, 0) vbox2.pack_start(spinner1, gtk.FALSE, gtk.TRUE, 0) vbox2 = gtk.GtkVBox(gtk.FALSE, 0) hbox.pack_start(vbox2, gtk.TRUE, gtk.TRUE, 5) label = gtk.GtkLabel("Digits :") label.set_alignment(0, 0.5) vbox2.pack_start(label, gtk.FALSE, gtk.TRUE, 0) adj = gtk.GtkAdjustment(2, 1, 5, 1, 1, 0) spinner2 = gtk.GtkSpinButton(adj, 0.0, 0) spinner2.set_wrap(gtk.TRUE) adj.connect("value_changed", self.change_digits, spinner2, spinner1) vbox2.pack_start(spinner2, gtk.FALSE, gtk.TRUE, 0) hbox = gtk.GtkHBox(gtk.FALSE, 0) vbox.pack_start(hbox, gtk.FALSE, gtk.TRUE, 5) button = gtk.GtkCheckButton("Snap to 0.5-ticks") button.connect("clicked", self.toggle_snap, spinner1) vbox.pack_start(button, gtk.TRUE, gtk.TRUE, 0) button.set_active(gtk.TRUE) button = gtk.GtkCheckButton("Numeric only input mode") button.connect("clicked", self.toggle_numeric, spinner1) vbox.pack_start(button, gtk.TRUE, gtk.TRUE, 0) button.set_active(gtk.TRUE) val_label = gtk.GtkLabel("") hbox = gtk.GtkHBox(gtk.FALSE, 0) vbox.pack_start(hbox, gtk.FALSE, gtk.TRUE, 5) button = gtk.GtkButton("Value as Int") button.connect("clicked", self.get_value, 1, spinner1, spinner2, val_label) hbox.pack_start(button, gtk.TRUE, gtk.TRUE, 5) button = gtk.GtkButton("Value as Float") button.connect("clicked", self.get_value, 2, spinner1, spinner2, val_label) hbox.pack_start(button, gtk.TRUE, gtk.TRUE, 5) vbox.pack_start(val_label, gtk.TRUE, gtk.TRUE, 0) val_label.set_text("0") hbox = gtk.GtkHBox(gtk.FALSE, 0) main_vbox.pack_start(hbox, gtk.FALSE, gtk.TRUE, 0) button = gtk.GtkButton("Close") button.connect("clicked", gtk.mainquit) hbox.pack_start(button, gtk.TRUE, gtk.TRUE, 5) window.show_all() def main(): gtk.mainloop() return 0 if __name__ == "__main__": SpinButtonExample() main()