【发布时间】:2021-04-22 21:21:39
【问题描述】:
我正在使用 python 3,每当我执行以下 python 脚本时:
import time
while (True):
print("-test-")
time.sleep(1)
在我的 linux 终端上。只要终端聚焦,每次击键(如第三行中的“asdf”)都会打印到终端:
-test-
-test-
asdf-test-
-test-
有没有办法在我的 python 脚本运行时阻止终端输出击键(最好不更改操作系统或终端本身的配置)?
更具体地说,我想使用“pynput”来读取键盘事件,而不会出现在我的输出中:
from pynput import keyboard
import time
def key_pressed(key):
print("key {0} pressed".format(key))
if __name__ == "__main__":
listener = keyboard.Listener(on_press=key_pressed)
listener.start()
while(True):
print("-test-")
time.sleep(1)
会输出:
-test-
-test-
akey 'a' pressed
-test-
当在第二个print("-test-") 之后按下键“a”而不是:
-test-
-test-
key 'a' pressed
-test-
我发现了这个:
How to prevent shell from getting input (keyboard) while running a python script?
链接到:
How do I 'lock the keyboard' to prevent any more keypresses being sent on X11/Linux/Gnome?
据我所知,这并不是我想要的,因为他们试图完全阻止键盘输入。我只想在运行脚本的终端上阻止它。
【问题讨论】: