如何更新屏幕或同时等待密钥?我在Python上使用unicurses但我认为我在C中会遇到同样的问题。 这是我想在伪代码中做的事情:
function startScreen(){
stdscr = initscr()
while True{
- Update screen using a variable that is constantly changing (probably by a thread, right?)
- Get a key with getch() - to close or interact with the screen
}
}
我的问题是除非发生某些事情,否则屏幕不会更新,例如调整屏幕大小或按键。我正在考虑使用while循环(和time.sleep(1)?)来更新屏幕和一个等待键的线程。那可能吗?我对线程知之甚少,这就是我要问的原因。有更简单的方法吗?
谢谢。
答案 0 :(得分:2)
这可以在没有任何复杂的多线程的情况下完成。函数curses.halfdelay
也可以在您使用的unicurses库中找到。需要等待十分之一秒才能继续。 https://docs.python.org/3/library/curses.html#curses.halfdelay
这是一个示例代码,除非有按下按钮,否则每半秒刷新一次,在这种情况下会立即更新。
import curses
scr = curses.initscr()
curses.halfdelay(5) # How many tenths of a second are waited, from 1 to 255
curses.noecho() # Wont print the input
while True:
char = scr.getch() # This blocks (waits) until the time has elapsed,
# or there is input to be handled
scr.clear() # Clears the screen
if char != curses.ERR: # This is true if the user pressed something
scr.addstr(0, 0, chr(char))
else:
scr.addstr(0, 0, "Waiting")