diff options
Diffstat (limited to 'test/stuff/test1.py')
-rw-r--r-- | test/stuff/test1.py | 70 |
1 files changed, 70 insertions, 0 deletions
diff --git a/test/stuff/test1.py b/test/stuff/test1.py new file mode 100644 index 00000000..97505c41 --- /dev/null +++ b/test/stuff/test1.py @@ -0,0 +1,70 @@ +#!/usr/bin/python3 +# coding=utf-8 +# some tests with curses, threads and unicode +import os +import curses +import time +import threading +import locale +import _thread + +lock = _thread.allocate_lock() + +locale.setlocale(locale.LC_ALL, 'en_US.utf8') + +blocked = False +stringy = 'ใใงใ' +stdscr = curses.initscr() + +curses.noecho() +curses.cbreak() +curses.halfdelay(3) +stdscr.keypad(1) +#curses.curs_set(0) + +stdscr.addstr(4, 0, stringy) +stdscr.refresh() + +class ThreadTest(threading.Thread): + def __init__(self, *a, **b): + threading.Thread.__init__(self, *a, **b) + self.killed = False + + def run(self): + global stdscr + global blocked + for i in range(1,50): + while blocked: time.sleep(0.1) + blocked = True + stdscr.addstr(1, 0, str(i)) + stdscr.refresh() + blocked = False + time.sleep(0.1) + if self.killed: raise SystemExit() + + def kill(self): + self.killed = True + +thr = ThreadTest() +thr.start() + +try: + while 1: + c = stdscr.getch() + if c == ord('q'): raise + while blocked: time.sleep(0.1) + blocked = True + stdscr.addstr(0, 0, str(c)) + stdscr.refresh() + blocked = False + +except Exception: + thr.kill() + raise +finally: + curses.nocbreak() + stdscr.keypad(1) + curses.echo() + curses.endwin() +# curses.curs_set(1) + |