【发布时间】:2019-06-16 03:22:33
【问题描述】:
基本上我的程序监听击键,如果它看到“向上”箭头被按下,它开始使用依赖于“标志”为真的 while 循环打印单词 test。我希望程序在按下向下键时停止,但我无法做到这一点。我没有收到任何错误,只是没有停止。
代码如下:
from pynput.keyboard import Key, Listener
flag = False
def doit():
while flag:
print("test")
def released(key):
global flag
if key == Key.up:
flag = True
doit()
elif key == Key.down:
print("stopped")
flag = False
with Listener(on_release=released) as listener:
listener.join()
当我按下向下箭头时,“停止”不会被打印出来,所以似乎根本没有使用 if 语句。我该如何解决这个问题?
【问题讨论】:
-
对
doit()的调用永远不会返回,也永远不允许您检查Key.down是否被按下。尝试在doit()之后在线打印一些东西 - 它永远不会。许多应用程序既需要进行一些处理(如渲染),又需要允许用户输入。这通常通过将每个线程分开以在自己的线程上运行或在两者之间切换来完成。 -
这个答案非常复杂。您在问如何使某些东西完全同步,完全异步。
-
最好的方法是什么?