New submission from Pavel Bazant <[EMAIL PROTECTED]>: When python is in interactive mode, curses does not react to resize events properly.
test.py: import curses def run(): stdscr=curses.initscr() key=0 while(key!=ord('q')): key=stdscr.getch() stdscr.addstr(0,0,str(stdscr.getmaxyx())+' '+str(key)) stdscr.refresh() curses.endwin() run() When this is run directly, everything is ok. When it is called via execfile() from the interactive prompt, it shows the right screen size after the first keypress, but behaves oddly after the resize. IMHO, the following happens: For some reason, env. variables LINES and COLUMNS are set but they are not reflected in the os.environ structure nor they respond to screen size changes. If these variables are set then the ncurses library (see man pages) uses their values instead of getting the term size via ioctl. The ncurses library receives a SIGWINCH and sees that LINES and COLUMNS are set. However, their values are same as the screen dimensions before the resize, so it is perplexed why there is a SIGWINCH if the screen did not change and it just ungetchs an ERR and ncurses internal structures are not changed appropriately. >From the resizeterm man page: "If the environment variables LINES or COLUMNS are set, this overrides the library's use of the window size obtained from the operating system. Thus, even if a SIGWINCH is received, no screen size change may be recorded. In that case, no KEY_RESIZE is queued for the next call to getch; an ERR will be returned instead." Executing import os os.environ['LINES']="blah" del os.environ['LINES'] os.environ['COLUMNS']="blah" del os.environ['COLUMNS'] solves the problem for me. Perhaps the problem has sth to do with python using readline in interactive mode??? PB ---------- components: None messages: 65700 nosy: pbazant severity: normal status: open title: Curses terminal resize problems when Python is in interactive mode type: behavior versions: Python 2.4 __________________________________ Tracker <[EMAIL PROTECTED]> <http://bugs.python.org/issue2675> __________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com