title: Proper way of building Gtk3 applications in Python
body: <p>I have just started learning about creating GUI apps in Python. I decided to use Gtk version 3.
  According to the (official?) tutorial on <a href="http://python-gtk-3-tutorial.readthedocs.org/" rel="noreferrer">http://python-gtk-3-tutorial.readthedocs.org/</a> the proper way of building a hello world application is:</p>
  
  <pre><code>from gi.repository import Gtk
  
  class MyWindow(Gtk.Window):
      def __init__(self):
          Gtk.Window.__init__(self)
          self.set_default_size(200, 100)
          self.connect('destroy', Gtk.main_quit)
          self.show_all()
  
  MyWindow()
  Gtk.main()
  </code></pre>
  
  <p>In other tutorial (<a href="http://www.micahcarrick.com/gtk3-python-hello-world.html" rel="noreferrer">http://www.micahcarrick.com/gtk3-python-hello-world.html</a>) I found completly different aproach which is:</p>
  
  <pre><code>from gi.repository import Gtk, Gio
  
  class HelloWorldApp(Gtk.Application):
      def __init__(self):
          Gtk.Application.__init__(self, application_id="apps.test.helloworld",
                                   flags=Gio.ApplicationFlags.FLAGS_NONE)
          self.connect("activate", self.on_activate)
  
      def on_activate(self, data=None):
          window = Gtk.Window(type=Gtk.WindowType.TOPLEVEL)
          window.set_title("Gtk3 Python Example")
          window.set_border_width(24)
          label = Gtk.Label("Hello World!")
          window.add(label)
          window.show_all()
          self.add_window(window)
  
  if __name__ == "__main__":
      app = HelloWorldApp()
      app.run(None)
  </code></pre>
  
  <p>Could someone experienced in this category tell me in what way should I write Gtk 3 apps in python these days? I'm already familiar with writing GUIs (spent few months in Java's Swing) so you can go on with terms like events, callbacks and so on..</p>