Python анимированный курсор рядом с напечатанной строкой - PullRequest
1 голос
/ 09 января 2020

Я программист-любитель, и я делаю разные программы на python, что является моим любимым.

Я работаю на linux ОС и создал программу, которая печатает текст, а затем запускает подпроцесс. call:

for i in range(1,10):
   print("Running this command") #I want to put some animation here
   subprocess.call(["xterm", "-e", " < runs a command for x amount of time and exits> "])

Как указано в приведенном выше коде, я хочу включить анимацию, например (/, |, \, |) и c, для печати в той же строке, что и «Запуск этой команды», и Когда окно subprocess.call закрывается, я хочу остановить анимацию, чтобы l oop мог продолжить на следующей строке с той же концепцией, что и в приведенной выше строке. Я нашел несколько примеров на сайте, но не могу остановить анимацию, поэтому l oop не продолжается.

Спасибо за ваше время !!!

1 Ответ

1 голос
/ 09 января 2020

Вот рабочий пример, который я получил. Я на Windows, поэтому замените команду на то, что вы хотите.

from itertools import cycle
from subprocess import Popen
from time import sleep

sequence = cycle(['|', '\\', '-', '/'])  # cycles through the symbols for you animation

proc = Popen(['notepad.exe']) # substitute for your command.

while proc.poll() == None: 
# If the process is open, proc.poll() returns None, so this checks if it 
# is still running
    print(f'\rRunning {next(sequence)}', end='') 
    # \r sets the line back at the beginning, end='' makes so that print doesn't add a 
    #newline at the end
    time.sleep(0.5) # Makes it so it doesn't spin so fast

Теперь вам нужно адаптировать это к вашему сценарию использования. Я бы обернул процесс создания и l oop в функцию, а затем вызвал ее на другом l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...