from sys import stdout from time import sleep text = '12345' for i in range(len(text)): stdout.write(text[i]) stdout.flush() sleep(1) stdout.write("\r \r\n")
ZerGНе знаю как это работает, но сначала строка приняла значение 12345, поочередно, когда скрипт закончился 1 и 2 пропали. Tак и было запланировано?
отталкивайтесь от
LestoroerТолько начинаю с питоном разбираться, но мне кажется, что в терминале линукса это делается проще, поскольку для этого используется псевдографический интерфейс, насколько я понимаю.
Думал будет легкая задачка, которую я за 15 минут решу. Сидел 5 часов, в итоге получилось в PyQt5 сделать динамический интерфейс (если я правильно понял вашу трактовку дин.интерфейса) результат программы можно посмотреть в приложенной гифке. Нажимаем кнопку “начать” и у нас идет отсчет.Получается, динамический интерфейс сделать можно, правда придется прибегать к многопотоковости. Делал приложение 5 часов, потому что был вообще без понятия как это делается (многопоточность). Пробовал сделать однопоточное приложение, у меня не получись, когда вызывал sleep() приложение засыпало и ничего нельзя было с ним делать. Думаю, все же можно даже без потоков осуществить дин.интерфейс, т.е. вообще не использовать этот sleep(), но не уверен в этом.Думаю, еще это можно сделать в Pygame, правда я с ним почти не знаком.
demigodНу и в питоне это несложно. Я просто совсем не был знаком с потоками, а писал в PyQt5, а для него нету вообще книг, только на PyQt4 есть, вот с этим и возникли сложности.
import time y = 0 x = 5 while y < x: y = y+1 print(str(y)) time.sleep(1)
>>> for i in range(5): ... stdout.write("\b") ... stdout.write(str(i)) ... sleep(1) 4
LestoroerДа, раньше потоков не было, а прогрессбары были. Можешь и сейчас какие-нибудь коносольные программы посмотреть, многие исходники открыты.
Думаю, все же можно даже без потоков осуществить дин.интерфейс