Я пытаюсь сделать приложение для заметок в Python, используя curses.Внизу слева должны быть часы, которые обновляются каждую секунду.
Проблема, с которой я столкнулся, заключается в том, что она либо должна поспать 1 секунду, либо ждать ввода.
Возможно липодождать ввода в течение 1 секунды и продолжить, если вход не зарегистрирован?
Причина, по которой я хочу это сделать, состоит в том, чтобы предотвратить задержку при перемещении в приложении.
Я думал что-то вродеМногопоточность могла бы справиться с этой задачей, но у нее тоже возникли некоторые проблемы.
Это код, который у меня есть:
#!/usr/bin/env python3
import curses
import os
import time
import datetime
import threading
def updateclock(stdscr):
while True:
height, width = stdscr.getmaxyx()
statusbarstr = datetime.datetime.now().strftime(' %A')[:4] + datetime.datetime.now().strftime(' %Y-%m-%d | %H:%M:%S')
stdscr.addstr(height-1, 0, statusbarstr)
time.sleep(1)
def draw_menu(stdscr):
k = 0
stdscr.clear()
stdscr.refresh()
threading.Thread(target=updateclock, args=stdscr).start()
cursor_y = 0
cursor_x = 0
while (k != ord('q')):
#while True:
stdscr.clear()
height, width = stdscr.getmaxyx()
stdscr.addstr(height//2, width//2, "Some text in the middle")
if k == curses.KEY_DOWN:
cursor_y = cursor_y + 1
elif k == curses.KEY_UP:
cursor_y = cursor_y - 1
elif k == curses.KEY_RIGHT:
cursor_x = cursor_x + 1
elif k == curses.KEY_LEFT:
cursor_x = cursor_x - 1
stdscr.refresh()
#time.sleep(1)
# Wait for next input
k = stdscr.getch()
curses.wrapper(draw_menu)
Код выглядит довольно грязно, и это первый разВ основном я сосредоточился на функции curses.
Можно ли только ждать ввода k = stdscr.getch()
в течение 1 секунды?