2015-02-06 9 views
0

나는 C#과 파이썬 래퍼 인 libtcod 라이브러리로 적당한 양의 코딩을했다. 나의 현재 설정은 KUbuntu 14.10, Python 2.7.8 및 libtcod 1.5.2입니다.KUbuntu, Python 및 libtcod - console_is_window_closed가 작동하지 않습니다 ...?

나는 잘 작동하는 몇 가지 프로그램을 만들었지 만 최근에 시작한 프로그램은 콘솔 창을 닫지 못하도록하고 싶지 않습니다.

콘솔에서 프로그램을 실행하는 콘솔에서 CTRL+C을 보낼 수는 있지만 닫히지 만 윈도우의 "x"버튼 또는 Alt+F4을 클릭 할 필요가 없습니다. 나는이 프로그램을 실행하면 콘솔이 예상대로 온다

''' 
justclose.py 
''' 

import sys 
import time 
import libtcodpy as libtcod 

libtcod.console_set_custom_font(b'lucida12x12_gs_tc.png', libtcod.FONT_TYPE_GREYSCALE | libtcod.FONT_LAYOUT_TCOD) 
libtcod.console_init_root(50,50, "The ever-present window", False) 
libtcod.console_flush() 

while not libtcod.console_is_window_closed(): 
    time.sleep(1) 

sys.exit 

, 그리고 그것을하지 않을있는, true를 반환하는 console_is_window_closed 기다리고 주위에 앉아 :

내 코드는 다음과 같습니다. 문제가있는 곳을 잘 모르겠습니다. 나는 동일한 초기화 코드를 사용하는 다른 프로그램을 실행할 수 있으며, 동일한 while 루프와 콘솔 창에서 닫기 버튼을 클릭하면 나에게 잘 응답한다.

나는 프로세스의 strace를 조사해 보았지만, 나는 그것을 해독하는 임무를 띤다 고 확신하지 못한다. 평범함을 즉시 보지 못했습니다.

잘못된 정보를 추적하는 방법에 대한 조언이 필요합니다. 감사.

편집 : 구체적으로 말해서, 닫기 창 이벤트가 전파되고 있는지, 그리고 그렇다면 얼마나 멀리, 갇히거나 무시되는지 등을 확인하고 싶습니다. strace를 실행할 때 닫기 버튼을 클릭해도 아무 일도 일어나지 않습니다. 이것을 디버깅하는 더 좋은 방법이 있습니까?

답변

0

time.sleep(1)libtcod.console_check_for_keypress()으로 바꿉니다. 프로그램이 각 반복마다 1 밀리 초 동안 대기하면 X를 누를 때 프로그램에서 응답 할 수 없습니다. CTRL+C을 누르면 프로그램이 SIGINT 신호를 수신하고 즉시 종료되므로 종료됩니다. time.sleep(1)libtcod.console_check_for_keypress()으로 바꾸면 프로그램이 키보드에서 누른 키를 확인합니다. 그렇게하면 프로그램이 실행을 차단하지 않습니다.