我已经用libtcod库编写了相当数量的代码,包括C#和python包装器。我当前的设置是Python14.10、KUbuntu 2.7.8和libtcod1.5.2。
我做了几个运行良好的程序,但我刚开始的最新程序似乎不允许我关闭控制台窗口。
我可以从运行程序的控制台发送一个CTRL+C,它将关闭,但是,无论如何点击窗口的"x“按钮,或者Alt+F4s似乎都不起作用。
我的代码如下:
'''
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循环,单击控制台窗口上的关闭按钮就可以很好地响应这些程序。
我试着浏览了整个过程的一个策略,但我不确定我是否能胜任破译它的任务。看起来没有什么不寻常的地方。
谢谢。
编辑:具体地说,我想知道如何检查close window事件是否正在传播,如果是的话,传播到什么程度,在哪里被捕获/忽略,诸如此类的事情。有没有更好的方法来调试这个?
发布于 2015-06-22 22:57:12
用libtcod.console_check_for_keypress()替换time.sleep(1)。当程序在每次迭代中休眠1毫秒时,按X键时程序无法响应。按CTRL+C键时程序会退出,因为程序会收到SIGINT信号并立即退出。用libtcod.console_check_for_keypress()替换time.sleep(1)使程序检查键盘上按下的键(如果有)。这样,程序就不会阻塞执行。
https://stackoverflow.com/questions/28357747
复制相似问题