在 python shell 上制作一个闪烁的忙碌指示灯

Posted

技术标签:

【中文标题】在 python shell 上制作一个闪烁的忙碌指示灯【英文标题】:Make a blinking busy indicator on python shell 【发布时间】:2016-08-09 01:30:24 【问题描述】:

我想让* 在命令行上每隔 1 秒闪烁一次。

import time
from sys import stdout

while True:
    stdout.write(' *')
    time.sleep(.5)
    stdout.write('\r  ')
    time.sleep(.5)

我得到的只是一个空行,没有闪烁的*

这是为什么呢?

【问题讨论】:

你的程序适合我。一定是你的环境有问题。你在闲置吗? 为什么不使用打印? 不,我使用的是 KDE 终端“Konsole” 因为 print 总是打印换行符 【参考方案1】:

看看这个。这将以 0.5 秒的间隔在一行上打印*,并显示 0.5 秒(如您所说的那样闪烁)

import time

while True:
     print('*', flush=True, end='\r')
     time.sleep(0.5)
     print(' ', flush=True, end='\r')
     time.sleep(0.5)

请注意,这在 IDLE 中不起作用,但使用 cmd 可以正常工作。

不使用两个打印语句,你可以这样做:

import time

i = '*'
while True:
    print('\r'.format(i), end='')
    i = ' ' if i=='*' else '*'
    time.sleep(0.5)

【讨论】:

在 Windows 上打印重复的 *,end='\r' 适合我【参考方案2】:

看看这里的讨论:How to overwrite the previous print to stdout in python? 以下代码适用于 Windows 10 上的 IDLE 环境和命令行:

import time

while True:
    print('*', end="\r")
    time.sleep(.5)
    print(' ', end="\r")
    time.sleep(.5)

【讨论】:

以上是关于在 python shell 上制作一个闪烁的忙碌指示灯的主要内容,如果未能解决你的问题,请参考以下文章

使用Axure制作图标闪烁效果

SHELL输出颜色和闪烁控制

如何在 jQuery 和 SASS 中制作一个轻轻闪烁的按钮?

ReactJS网站在移动浏览器上重新渲染和闪烁[关闭]

使用 CPaintDC 时减少闪烁

SurfaceView drawText 闪烁