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 屏幕闪烁的主要内容,如果未能解决你的问题,请参考以下文章

横向定位失败,屏幕闪烁

在屏幕之间切换时边缘闪烁ios7

使用 glutBitmapCharacter() 屏幕闪烁?

uiscrollview 缩放时,内容视图刷新但首先闪烁屏幕

神舟笔记本K480N-I7 D3笔记本屏幕闪烁?

如何解决由于加载图像而导致屏幕闪烁的问题?