====== pygtk methods overriding ====== Suppose that I have a gtk.Label (or any other gtk.Widget) **label** which has a method I don't like, for instance //size_request//. So I write a new method //my_beautiful_size_request// which behaves as I want. However this won't work: label.size_request = my_beautiful_size_request ; my method will just never be called, because apparently the C code which is under pygtk doesn't really care if the python object has a new method appended to it. This instead will work: class MyLabel(gtk.Label): __gtype_name__ = 'MyLabel' do_size_request = my_beautiful_size_request label = MyLabel() ; this works for (as far as I know) **all** pygtk methods: it is sufficient to add //do_// in front of the name of a method. Notice, however, that the //do_*// method doesn't necessarily accept the same arguments as the original, neither return the same values (and also notice that as of January 2009, [[http://bugzilla.gnome.org/show_bug.cgi?id=567489|there is a bug]] which makes error messages totally misleading). For instance, in our case, while size_request is called by just giving the instance as argument, and returns a tuple, do_size_request is called with two arguments: the instance and a //requisition//, and instead of returning the two dimensions, it sets them as //requisition.width// and //requisition.height//