Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 27, 2017 10:20:13

Scorp1978
Зарегистрирован: 2017-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

Здравствуйте всем, подскажите что делаю не так, почему в консоли не обновляется время?

 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()
 

Офлайн

#2 Ноя. 27, 2017 10:35:14

vic57
Зарегистрирован: 2015-07-07
Сообщения: 913
Репутация: +  127  -
Профиль  

Как обновить время в консоли?

getch() будет ждать нажатия клавиши
вроде нужно stdscr.nodelay(1) в инициализации

Офлайн

#3 Ноя. 27, 2017 11:34:39

Scorp1978
Зарегистрирован: 2017-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

getch() убрал не помогло
что значит stdscr.nodelay(1) в инициализацию?

Офлайн

#4 Ноя. 27, 2017 11:36:55

Scorp1978
Зарегистрирован: 2017-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

 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)

Офлайн

#5 Ноя. 28, 2017 04:28:34

Scorp1978
Зарегистрирован: 2017-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

Вопрос открытый …

Офлайн

#6 Ноя. 28, 2017 04:59:23

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

Scorp1978
почему в консоли не обновляется время?
Ну а почему оно должно обновляться то? Где в вашей программе происходит процесс этого обновления? Ваша переменная now ничем не хуже и не лучше любой другой переменной, вы дали ей значение - результат функции datetime.datetime.now() и это значение тихонько себе лежит в памяти, никто не просил его обновляться, никто не давал ему никакого другого значения.



Офлайн

#7 Ноя. 28, 2017 06:02:45

Scorp1978
Зарегистрирован: 2017-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

FishHook
while True:
time.sleep(int(period))
create_label(1, 1, 49,“Current time: ”+str(now.strftime(“%H:%M %d-%m-%Y”)),0)
endwin()

бесконечный цикл на функцию create_label() которая mvaddstr(sty, stx, mText) рисует время на экране. Ну я как то так представлял.

Отредактировано Scorp1978 (Ноя. 28, 2017 06:03:33)

Офлайн

#8 Ноя. 28, 2017 06:15:27

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

Scorp1978
рисует время на экране
Она рисует ровно то, что у вас находится в данный момент в переменной now. Но так как значение переменной нигде не изменяется, вы получаете одно и то же. Логично вроде.



Офлайн

#9 Ноя. 28, 2017 07:32:38

Scorp1978
Зарегистрирован: 2017-11-27
Сообщения: 36
Репутация: +  0  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

FishHook
Ничего не понимаю. Ведь str(now.strftime(“%H:%M %d-%m-%Y”)) возвращает в разный момент времени разное время, в частности каждые time.sleep(int(period)) 10 секунд.
И почему нигде не меняется, вот здесь разве не меняется str(now.strftime(“%H:%M %d-%m-%Y”))

Отредактировано Scorp1978 (Ноя. 28, 2017 07:34:14)

Офлайн

#10 Ноя. 28, 2017 07:44:47

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Как обновить время в консоли?

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
вот здесь разве не меняется str(now.strftime(“%H:%M %d-%m-%Y”))
что именно по-вашему делает метод strftime(“%H:%M %d-%m-%Y”)?



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version