我真的需要asyncio
兼容getkey()
,所以我可以
async def stuff():
await getkey()
因此,当协程stuff
命中await
时,我们的循环会停止任务,并继续执行另一个任务。
我是编码新手,但确实在某处有这样的事情?
如果没有,是否可以建立这样的协同程序?
getkey()
可以以任何形式返回按下的键值。
但它应该cbreak
和noecho
开启(不要等待输入,不要打印按下的键)。
(澄清,不需要继续阅读。)
请帮助我^^我知道,这种做法似乎很不寻常。运行在它自己的线程中的Curses将是正确的方法。但是我只能使用curses进行显示..我也很擅长编码..而且我没有时间去研究这个线程化的事情:/我只需要我的100行就能非常快速地工作,也只需要一次:!
答案 0 :(得分:1)
如果您不想实际等待按键,一种方法是使用线程来检测按键:
from threading import Thread
import curses
key_pressed = False
def detect_key_press():
global key_pressed
stdscr = curses.initscr()
key = stdscr.getch()
key_pressed = True
def main():
thread = Thread(target = detect_key_press)
thread.start()
while not key_pressed:
print('Hello world\r')
curses.endwin()
main()
使用全局变量并不是很好,但这是一种快速的方法。
答案 1 :(得分:0)
以下是使用keyboard
而非curses
的解决方案:
import keyboard
import time
from threading import Thread
key_pressed = False
def detect_key_press():
global key_pressed
while not keyboard.is_pressed('q'):
pass
key_pressed = True
def main():
thread = Thread(target = detect_key_press)
thread.start()
while not key_pressed:
print("Waiting for keypress...")
time.sleep(1)
main()
在thread
内部启动main
,等待按键