я как-то делал knob widget -- просто наследовался от gtk.DrawingArea и переопределял expose(). в общем случае можно наследоваться от gtk.Widget, получать от него gdk.Widnow и через Drawable интерфейс перерисовывать.
(всё это потом доступно только из питона, ясное дело)