python 诅咒 tty 屏幕闪烁
Posted
技术标签:
【中文标题】python 诅咒 tty 屏幕闪烁【英文标题】:python curses tty screen blink 【发布时间】:2014-09-17 20:26:42 【问题描述】:我正在编写一个 python 诅咒游戏 (https://github.com/pankshok/xoinvader)。 我发现了一个问题:在终端模拟器中它工作正常,但在 tty 屏幕闪烁。 我尝试使用 curses.flash(),但它变得更糟。
例如屏幕字段:
self.screen = curses.newwin(80, 24, 0, 0)
主循环:
def loop(self):
while True:
self.events()
self.update()
self.render()
渲染:(https://github.com/pankshok/xoinvader/blob/master/xoi.py#L175)
self.screen.clear()
#draw some characters
self.screen.refresh()
time.sleep(0.03)
睡眠功能中的恒定时间是暂时的,直到我编写了 60 个渲染调用控制器。
如何正确实现render方法?
提前致谢, 保罗。
【问题讨论】:
【参考方案1】:不要调用clear
来清屏,而是使用erase
。使用clear
设置一个标志,这样当您调用refresh
时,它所做的第一件事就是清除终端屏幕。这就是导致终端屏幕闪烁的原因。用户看到的是旧屏幕,然后是一个完全空白的屏幕,然后是您的新屏幕。如果您使用erase
,那么它将改为将旧屏幕修改为看起来像新屏幕。
您可能仍会在慢速终端上看到一些奇怪的闪烁或其他伪影。尝试调用screen.idcok(False)
和screen.idlok(False)
来阻止curses 使用插入和删除操作来更新屏幕。
【讨论】:
以上是关于python 诅咒 tty 屏幕闪烁的主要内容,如果未能解决你的问题,请参考以下文章
使用 glutBitmapCharacter() 屏幕闪烁?