import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk
from gi.repository import GLib

class SpinnerAnimation(Gtk.Window):

    def __init__(self):

        Gtk.Window.__init__(self, title="Spinner")
        self.set_border_width(3)
        self.connect("delete-event", Gtk.main_quit)

        self.button = Gtk.ToggleButton("Start Spinning")
        self.button.connect("toggled", self.on_button_toggled)
        self.button.set_active(False)

        self.spinner = Gtk.Spinner()

        self.table = Gtk.Table(3, 2, True)
        self.table.attach(self.button, 0, 2, 0, 1)
        self.table.attach(self.spinner, 0, 2, 2, 3)

        self.add(self.table)
        self.show_all()

    def on_button_toggled(self, button):

        if button.get_active():
            self.spinner.start()
            self.button.set_label("Stop Spinning")

        else:
            self.spinner.stop()
            self.button.set_label("Start Spinning")


x = 1
def add_idle():
	global x
	print("idle", x)
	x += 1
	GLib.idle_add(add_idle)
add_idle()
myspinner = SpinnerAnimation()
myspinner = SpinnerAnimation()
myspinner = SpinnerAnimation()
myspinner = SpinnerAnimation()
myspinner = SpinnerAnimation()
myspinner = SpinnerAnimation()
myspinner = SpinnerAnimation()

Gtk.main()

