我正在用 Python 重写一个 C# 控制台应用程序,我想移植我编写的一个不确定的基于控制台的进度条类。

我有使用文本创建确定进度条的示例,但我不确定如何做一个不确定的进度条。我假设我需要某种线程。谢谢你的帮助!

这是类(class):

public class Progress {
    String _status = "";
    Thread t = null;

    public Progress(String status) {
        _status = status;
    }

    public Progress Start() {
        t = new Thread(() => {
            Console.Write(_status + "    ");

            while (true) {
                Thread.Sleep(300);
                Console.Write("\r" + _status + "    ");
                Thread.Sleep(300);
                Console.Write("\r" + _status + " .  ");
                Thread.Sleep(300);
                Console.Write("\r" + _status + " .. ");
                Thread.Sleep(300);
                Console.Write("\r" + _status + " ...");
            }
        });

        t.Start();

        return this;
    }

    public void Stop(Boolean appendLine = false) {
        t.Abort();
        Console.Write("\r" + _status + " ... ");
        if (appendLine)
            Console.WriteLine();
    }

}

( P.S. 请随意参加该 Progress 类(class))

最佳答案

import sys, time
while True:
    for i in range( 4 ):
        sys.stdout.write( '\r' + ( '.' * i ) + '   ' )
        sys.stdout.flush()
        time.sleep( 0.5 )

这在命令行上执行动画。这里应该有足够多的关于 Python 线程的例子。

编辑:

线程可能的解决方案;不知道写一个真正的线程是否会更有效率,因为我不太用 python 线程..
从线程导入计时器
导入系统,时间
def animation ( i = 0 ):
    sys.stdout.write( '\r' + ( '.' * i ) + '   ' )
    sys.stdout.flush()
    Timer( 0.5, animation, ( 0 if i == 3 else i + 1, ) ).start()

animation()
print( 'started!' )

while True:
    pass

关于c# - 如何在 Python 控制台应用程序中制作不确定的进度条?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5424951/

10-15 02:52