Bug with refresh in python curses

两盒软妹~` 提交于 2019-12-13 04:55:19

问题


I'm writing a program in curses and sometimes happens that if I leave the program opened and I use other terminal tabs for a while, when I go using the program again it seems like it has refreshed something and something has disappeared... I cannot show pics or screenshots because I haven't understood yet well when and how it happens... Is there a way to prevent or fix this?


回答1:


screen.getch reads from stdscr, and if it refreshes (due to any change on the screen), will overwrite boxes. You could change that to box.getch, as I did in scroll page by page or line by line using python curses

The manual page for getch says

If the window is not a pad, and it has been moved or modified since the last call to wrefresh, wrefresh will be called before another character is read.

In your sample program you used

screen.keypad( 1 )

which only applies to reading from the standard screen. If you read from the box window, you should set the keypad flag on that:

box.keypad( 1 )

The manual page for keypad says

The default value for keypad is FALSE

that is, it is the default for each window.

A curses program with multiple windows can choose to read from different windows at different times. There is only one input buffer for each screen, but the side-effect of refreshing the current window makes it simpler to manage updates to the windows. (For complicated window stacking order, you would use the panel library rather than rely upon this side-effect).



来源:https://stackoverflow.com/questions/30879873/bug-with-refresh-in-python-curses

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!