Propagate "quit" event, do not just terminate application. Resize: flag widgets to be resized, do resizes only once before draw. Draw: flag widgets to be redrawn, do not draw everything on any event.
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import locale
locale.setlocale(locale.LC_ALL, '')
from tuikit import Application, TreeView, TreeModel, ScrollView
class MyApplication(Application):
def __init__(self):
Application.__init__(self)
self.top.add_handler('keypress', self.on_top_keypress)
model = TreeModel()
model.add('/', ['a', 'b'])
model.add('/a', ['c', 'd'])
model.add((0,1), ['e', 'f'])
model.add(['a', 'd', 'e'], 'g')
model.add('/a/d/f', 'h')
for i in range(100):
model.add('/b', ['x'+str(i)])
view = TreeView(model)
#view.collapse('/a/d')
scroll = ScrollView()
scroll.add(view)
self.top.add(scroll, halign='fill', valign='fill')
def on_top_keypress(self, ev):
if ev.keyname == 'escape':
self.terminate()
return True
if __name__ == '__main__':
app = MyApplication()
app.start()