rendered paste body#!/usr/bin/env pythonimport gobject, gntfrom time import sleepfrom threading import Threadimport sysgobject.threads_init()class MyW(gnt.Window): __gntbindings__ = { 'new-close' : ('new_close', 'c'), } def new_close(self, null): sys.stderr.write("XXX\n") return Truegobject.type_register(MyW)gnt.register_bindings(MyW)class UI: def __init__(self): win = MyW() win.set_property('vertical', True) win.set_title("Contor") #gnt.set_flag(win, 1<<3) # setup logger self.logger = logger = gnt.TextView() logger.set_size(10, 5) logger.set_flag(1<<0) win.add_widget(logger) self.child = updater = Thread(target=self.updater, args=(logger,)) updater.setDaemon(True) updater.start() win.show() def reset_logger(w): self.logger = None win.connect('destroy', reset_logger) gnt.gnt_main() gnt.gnt_quit() def __del__(self): sys.exit(0) def updater(self, logger): self.count = 0 gobject.timeout_add(100, self.msg) def msg(self): if self.logger is None: return False self.logger.append_text_with_flags("%s " % self.count, gnt.TEXT_FLAG_NORMAL) self.logger.scroll(0) self.logger.draw() self.count = self.count + 1 return Trueif __name__ == "__main__": UI()