Python如何在不滚动的情况下显示大字符串:使用std.ou创建屏幕缓冲区

2024-06-07 13:08:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在制作一个简单的图形化命令行引擎

作为一个测试,我列出了尺寸端子宽度*端子高度。除非在列表的边框上,否则用“”填充。然后我有一个while循环,它通过将列表的内容写入std.out.write()来不断地将这些内容写入屏幕


screen = [" "]*(screenWidth*screenHeight)

for x in range(screenWidth):
    for y in range(screenHeight):
        if (x==0 or x==screenWidth-1 or y ==0 or y == screenHeight-1):
            screen[y*screenWidth+x] = "9"
        else: " "

def writeConsole(screen):

    strScreen = ''.join(screen)
    sys.stdout.write(strScreen)

while (True):
    writeConsole(screen)

我期待这个:

9999999
9     9
9     9
9999999

但它似乎在屏幕上滚动。我想这意味着我需要做一个缓冲区来写我的内容,然后写到屏幕上。但是通过将数组的内容强制转换为一个自然环绕窗口边缘的长字符串,我基本上就是这样做的,对吗

一直在试验sys.stdout.buffer.write和lambda:os.system('clear'),但没有效果


Tags: orin内容列表for屏幕rangescreen

热门问题