2011-12-20 8 views
3

curses 모듈을 사용하여 서버 응용 프로그램의 프런트 엔드를 작성 중입니다. curses가 반환 한 기본 창은 2 개의 하위 창으로 나뉩니다. 화면의 맨 위 부분은 서버의 출력을 인쇄하는 반면 하단은 window.getstr()을 사용하여 입력을 인쇄합니다. 때로는 텍스트를 입력 할 때 상위 절반이 전체 화면을 갱신하는 중 기존 문자를 임의의 문자로 대체하는 것이 좋습니다. 이것에 대한 특별한 이유가 있습니까? 아니면 저주 버그입니까?파이썬에서 저주 getstr() 새로 고침시

+0

나는 이와 같은 것을 구현하려고 생각했지만 서버 출력을 통해 스크롤하는 기능을 잃어 버리는 것은 받아 들일 수 없을 것입니다. 나는 curses에서 그 기능을 보존하는 방법이 있는지 궁금하다 ... –

답변

4

window.getstr()이 메인 스레드에서 실행되는 동안 상단 디스플레이를 업데이트하기 위해 스레드를 사용하고있는 것 같습니까?

그렇다면 curses 터미널 상태가 두 개의 다른 스레드에서 동시에 업데이트 할 수없는 공유 리소스라는 문제가 있습니다. 터미널을 비 블로킹 모드로 놓고 window.getch()를 사용하여 입력 문자열을 만들고 스레드가 상위 창 업데이트 작업을 주 스레드로 전달하도록해야합니다.

+0

나는 그것이 그랬을 것이라고 생각했지만, t를 가지지 않았다면 그것을 다시 고려하고 싶지 않았다. –

관련 문제