from gi.repository import Gtk import actions class ConsoleLogger: def __init__(self): pass def log(self, action): print 'Performed:', action.text class GtkLogger(Gtk.HBox): def __init__(self): super(Log, self).__init__() self.text = Gtk.TextView() self.text.set_editable(False) self.text.set_cursor_visible(False) self.buffer = self.text.get_buffer() self.scrolled = Gtk.ScrolledWindow() self.scrolled.set_policy(Gtk.PolicyType.NEVER, Gtk.PolicyType.ALWAYS) self.scrolled.add_with_viewport(self.text) #self.scrolled.set_size_request(-1, 100) self.pack_start(self.scrolled, True, True, 5) def log(self, action): self.buffer.insert_at_cursor('Performed: %s\n' % action.text) adj = self.scrolled.get_vadjustment() adj.set_value(adj.get_upper() - adj.get_page_size()) if __name__ == '__main__': window = Gtk.Window() window.connect("destroy", Gtk.main_quit) logger = GtkLogger() window.add(logger) window.show_all() logger.log(actions.Action('coucou')) Gtk.main()