【问题标题】:How To Print Grid In Python Without "Flashing" Screen如何在没有“闪烁”屏幕的情况下在 Python 中打印网格
【发布时间】:2019-12-03 15:50:20
【问题描述】:

在我一直在用 Python 编写的程序中,我需要能够一个一个地打印元素列表,在 n 个元素之后换行以形成一个网格。但是,每次程序重新打印网格时,您都可以看到它逐个元素地进行,这看起来相当丑陋并且让用户分心。我想知道是否有一种方法可以“暂停”控制台输出一小段时间以允许打印网格,然后显示网格,擦除以前的打印输出,以不显示它逐个打印元素。我需要这样做的原因是因为程序使用 Colorama 进行彩色输出,但列表中的不同元素需要有不同的颜色,这意味着每个元素必须一个一个地打印。

编辑(当前代码):

import time as t
from os import system as c
h = 50
w = 50
loop1 = 0
ostype = "Windows"
def cl():
  if(ostype == "Linux"):
    c('clear')
  if(ostype == "Windows"):
    c('cls')
def do():
    grid = []
    for x in range(0,h):
        temp = []
        for z in range(0,w):
            temp.append("#")
        grid.append(temp)
    for a in range(0,h):
        for b in range(0,w):
            print(grid[a][b], flush=False, end="")
        print()
while(loop1 == 0):
    do()
    t.sleep(1)
    cl()

【问题讨论】:

    标签: python colorama


    【解决方案1】:

    您可能可以告诉 print 不要刷新标准输出缓冲区,并让最后一个 print 刷新所有内容。取决于您使用的 python 版本,对于 python 3 打印函数需要一个刷新参数,相应地设置为 true/false。

    【讨论】:

    • 我在上面编辑的测试程序无法按我的需要运行。我以前从未使用过刷新选项,所以我不太确定如何使用它。
    • 您可能处于操作系统正在执行的渲染同步、刷新率领域。您可能对常规 python 没有太多控制权。您可能想要研究更多的图形/UI 渲染。 Python 可能有一些模块来处理这个问题,pygame、pyopengl 等......我很确定这些模块会让你对渲染能力有更多的控制。
    猜你喜欢
    • 2016-03-03
    • 2016-01-24
    • 1970-01-01
    • 1970-01-01
    • 2012-04-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多