首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和libtcod - console_is_window_closed不能工作...?

Python和libtcod - console_is_window_closed不能工作...?
EN

Stack Overflow用户
提问于 2015-02-06 10:46:49
回答 1查看 186关注 0票数 0

我已经用libtcod库编写了相当数量的代码,包括C#和python包装器。我当前的设置是Python14.10、KUbuntu 2.7.8和libtcod1.5.2。

我做了几个运行良好的程序,但我刚开始的最新程序似乎不允许我关闭控制台窗口。

我可以从运行程序的控制台发送一个CTRL+C,它将关闭,但是,无论如何点击窗口的"x“按钮,或者Alt+F4s似乎都不起作用。

我的代码如下:

代码语言:javascript
复制
'''
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事件是否正在传播,如果是的话,传播到什么程度,在哪里被捕获/忽略,诸如此类的事情。有没有更好的方法来调试这个?

EN

回答 1

Stack Overflow用户

发布于 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)使程序检查键盘上按下的键(如果有)。这样,程序就不会阻塞执行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28357747

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档