Форум сайта python.su
Здравствуйте всем, подскажите что делаю не так, почему в консоли не обновляется время?
import datetime import time from unicurses import * import sys reload(sys) sys.setdefaultencoding('utf8') now = datetime.datetime.now() period=10 stdscr = initscr() cbreak() noecho() curs_set(0) keypad(stdscr, True) start_color() refresh() init_pair(1, 2, COLOR_BLACK) init_pair(2, 3, COLOR_BLACK) init_pair(3, 4, COLOR_BLACK) init_pair(4, 5, COLOR_BLACK) init_pair(5, 6, COLOR_BLACK) init_pair(6, 7, COLOR_BLACK) init_pair(7, 8, COLOR_BLACK) init_pair(8, 9, COLOR_BLACK) init_pair(9, 10, COLOR_BLACK) init_pair(10, 11, COLOR_BLACK) init_pair(11, 12, COLOR_BLACK) init_pair(12, 13, COLOR_BLACK) def create_label(mColor, sty, stx, mText, mB): mvaddstr(sty, stx, mText) mvchgat(sty, stx, len(mText), mB, mColor , None) create_label(5, 3, 60,"Balance Delta,%",0) create_label(2,4,54,"USD",0) create_label(2,5,54,"LTC",0) create_label(2,6,54,"ZEC",0) create_label(2,7,54,"ZEN",0) create_label(2,8,54,"BCH",0) create_label(2,9,54,"DASH",0) create_label(2,10,54,"ETC",0) create_label(2,11,54,"XMR",0) create_label(5,3,33,"Price POLONIEX",0) create_label(2,4,32,"USD/BTC",0) create_label(2,5,32,"LTC/BTC",0) create_label(2,6,32,"ZEC/BTC",0) create_label(2,7,32,"ZEN/BTC",0) create_label(2,8,32,"BCH/BTC",0) create_label(2,9,32,"DASH/BTC",0) create_label(2,10,32,"ETC/BTC",0) create_label(2,11,32,"XMR/BTC",0) create_label(1, 1, 49,"Current time: "+str(now.strftime("%H:%M %d-%m-%Y")),0) getch() endwin() while True: time.sleep(int(period)) create_label(1, 1, 49,"Current time: "+str(now.strftime("%H:%M %d-%m-%Y")),0) getch() endwin()
Офлайн
getch() будет ждать нажатия клавиши
вроде нужно stdscr.nodelay(1) в инициализации
Офлайн
getch() убрал не помогло
что значит stdscr.nodelay(1) в инициализацию?
Офлайн
import datetime import time from unicurses import * import sys now = datetime.datetime.now() period=10 stdscr = initscr() cbreak() noecho() curs_set(0) keypad(stdscr, True) start_color() refresh() init_pair(1, 2, COLOR_BLACK) def create_label(mColor, sty, stx, mText, mB): mvaddstr(sty, stx, mText) mvchgat(sty, stx, len(mText), mB, mColor , None) create_label(1, 1, 49,"Current time: "+str(now.strftime("%H:%M %d-%m-%Y")),0) getch() endwin() while True: time.sleep(int(period)) create_label(1, 1, 49,"Current time: "+str(now.strftime("%H:%M %d-%m-%Y")),0) endwin()
Отредактировано Scorp1978 (Ноя. 27, 2017 11:37:41)
Офлайн
Вопрос открытый …
Офлайн
Scorp1978Ну а почему оно должно обновляться то? Где в вашей программе происходит процесс этого обновления? Ваша переменная now ничем не хуже и не лучше любой другой переменной, вы дали ей значение - результат функции datetime.datetime.now() и это значение тихонько себе лежит в памяти, никто не просил его обновляться, никто не давал ему никакого другого значения.
почему в консоли не обновляется время?
Офлайн
FishHookwhile True:
Отредактировано Scorp1978 (Ноя. 28, 2017 06:03:33)
Офлайн
Scorp1978Она рисует ровно то, что у вас находится в данный момент в переменной now. Но так как значение переменной нигде не изменяется, вы получаете одно и то же. Логично вроде.
рисует время на экране
Офлайн
FishHookНичего не понимаю. Ведь str(now.strftime(“%H:%M %d-%m-%Y”)) возвращает в разный момент времени разное время, в частности каждые time.sleep(int(period)) 10 секунд.
Отредактировано Scorp1978 (Ноя. 28, 2017 07:34:14)
Офлайн
Scorp1978Да с чего это?
возвращает в разный момент времени разное время
>>> import datetime >>> now = datetime.datetime.now() >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>> now datetime.datetime(2017, 11, 28, 12, 42, 49, 781132) >>>
Scorp1978что именно по-вашему делает метод strftime(“%H:%M %d-%m-%Y”)?
вот здесь разве не меняется str(now.strftime(“%H:%M %d-%m-%Y”))
Офлайн