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 -*-
from sdlterm import SDLTerminal
if __name__ == '__main__':
term = SDLTerminal()
term.resize(800, 600)
term.select_font(b"font/DejaVuSansMono.ttf", b"font/DejaVuSansMono-Bold.ttf", 12)
term.erase()
term.putch(5, 5, 'W')
term.commit()
while True:
event = term.wait_event()
print(event)
if event[0] == 'keypress' and event[1] == 'escape':
break