Создание анимации загрузки для терминала на Python


В этой статье описывается создание анимации загрузки для терминала на Python с использованием библиотек time, sys и threading. Представлен пошаговый разбор кода, демонстрирующий, как можно улучшить пользовательский опыт при выполнении длительных процессов.
Ожидание завершения длительных процессов может быть утомительным для пользователей. Анимация загрузки в терминале помогает улучшить пользовательский опыт, показывая, что процесс выполняется. В этой статье мы рассмотрим пример реализации анимации загрузки в терминале на языке Python.
Исходный код
import time, sys, threading
class Main:
def __init__(self):
self.start()
def animation(self):
self.animation = True
animation = [
"[■□□□□□□□□□]",
"[■■□□□□□□□□]",
"[■■■□□□□□□□]",
"[■■■■□□□□□□]",
"[■■■■■□□□□□]",
"[■■■■■■□□□□]",
"[■■■■■■■□□□]",
"[■■■■■■■■□□]",
"[■■■■■■■■■□]",
"[■■■■■■■■■■]"]
while self.animation == True:
for i in range(len(animation)):
time.sleep(0.5)
sys.stdout.write("\r" + animation[i % len(animation)])
sys.stdout.flush()
if self.animation == False:
break
sys.stdout.write("\r" + animation[-1])
sys.stdout.flush()
def start(self):
ws = threading.Thread(target=self.animation)
ws.setDaemon(True)
ws.start()
# Имитация долгого процесса
time.sleep(3)
self.animation = False
time.sleep(10)
if __name__ == '__main__':
Main()
Заключение
Данный пример демонстрирует, как можно реализовать анимацию загрузки в терминале на языке Python. Использование многопоточности позволяет выполнять анимацию параллельно с основным процессом, не блокируя его.
- 26.07.2024
- 40
- 0
Создание анимации загрузки для терминала на Python
Ожидание завершения длительных процессов может быть утомительным для пользователей. Анимация загрузки в терминале помогает улучшить пользовательский опыт, показывая, что процесс выполняется. В этой статье мы рассмотрим пример реализации анимации загрузки в терминале на языке Python.
Исходный код
import time, sys, threading
class Main:
def __init__(self):
self.start()
def animation(self):
self.animation = True
animation = [
"[■□□□□□□□□□]",
"[■■□□□□□□□□]",
"[■■■□□□□□□□]",
"[■■■■□□□□□□]",
"[■■■■■□□□□□]",
"[■■■■■■□□□□]",
"[■■■■■■■□□□]",
"[■■■■■■■■□□]",
"[■■■■■■■■■□]",
"[■■■■■■■■■■]"]
while self.animation == True:
for i in range(len(animation)):
time.sleep(0.5)
sys.stdout.write("\r" + animation[i % len(animation)])
sys.stdout.flush()
if self.animation == False:
break
sys.stdout.write("\r" + animation[-1])
sys.stdout.flush()
def start(self):
ws = threading.Thread(target=self.animation)
ws.setDaemon(True)
ws.start()
# Имитация долгого процесса
time.sleep(3)
self.animation = False
time.sleep(10)
if __name__ == '__main__':
Main()
Заключение
Данный пример демонстрирует, как можно реализовать анимацию загрузки в терминале на языке Python. Использование многопоточности позволяет выполнять анимацию параллельно с основным процессом, не блокируя его.