2015-02-06 43 views
0

我已經完成了libtcod庫的編碼,包括C#和python包裝。我目前的設置是KUbuntu 14.10,Python 2.7.8和libtcod 1.5.2。KUbuntu,Python和libtcod - console_is_window_closed不工作...?

我已經做了一些程序,工作正常,但我剛剛開始的最新似乎並不想讓我關閉控制檯窗口。

我可以從我運行該程序的控制檯發送一個CTRL+C,它會關閉,但是,窗口的「x」按鈕或點擊數量似乎都不起作用。

我的代碼如下:

''' 
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 

當我運行程序,控制檯上來,符合市場預期,而坐在那裏等待console_is_window_closed返回true,這不可能發生。我不確定問題出在哪裏。我可以運行其他程序,它們使用相同的初始化代碼和相同的while循環,並且只需點擊控制檯窗口上的關閉按鈕即可響應。

我試過尋找過程的一個階段,但是,我不確定我是否可以解密它。沒有什麼東西立刻顯得與衆不同。

我想就如何找出問題發生的一些建議。謝謝。

編輯:具體來說,我想知道如何檢查關閉窗口事件是否在傳播,如果有,多遠,它在哪裏被困/忽略,這類事情。當我穿過strace時,當我點擊關閉按鈕時,我看不到任何事情發生。有沒有更好的方法來調試呢?

回答

0

libtcod.console_check_for_keypress()代替time.sleep(1)。當程序每次迭代休眠1毫秒時,按下X時程序無法響應。當您按CTRL+C時它會退出,因爲程序收到SIGINT信號並立即退出。用libtcod.console_check_for_keypress()代替time.sleep(1)使程序檢查鍵盤上按下的鍵(如果有的話)。這樣,程序不會阻止執行。