当按下键时返回true的Python代码如果释放则返回false?
我需要一个python代码,如果按下并按住某个键,则返回一个if语句为true,如果释放该键,则返回false。我想这段代码能够执行时,按下并按住键 在某些系统上,当按下键盘时,它可以重复发送键事件,因此使用当按下键时返回true的Python代码如果释放则返回false?,python,if-statement,while-loop,Python,If Statement,While Loop,我需要一个python代码,如果按下并按住某个键,则返回一个if语句为true,如果释放该键,则返回false。我想这段代码能够执行时,按下并按住键 在某些系统上,当按下键盘时,它可以重复发送键事件,因此使用pynput您只需要此键(对于键“a”) 但有时重复不起作用,或者重复密钥需要很长时间,您可以使用全局变量作为密钥来保持True/False from pynput.keyboard import Listener, KeyCode import time # --- functions
pynput
您只需要此键(对于键“a”)
但有时重复不起作用,或者重复密钥需要很长时间,您可以使用全局变量作为密钥来保持True/False
from pynput.keyboard import Listener, KeyCode
import time
# --- functions ---
def get_pressed(event):
global key_a # inform function to use external/global variable instead of local one
if event == KeyCode.from_char('a'):
key_a = True
def get_released(event):
global key_a
if event == KeyCode.from_char('a'):
key_a = False
# --- main --
key_a = False # default value at start
listener = Listener(on_press=get_pressed, on_release=get_released)
listener.start() # start thread with listener
while True:
if key_a:
print('hold pressed: a')
time.sleep(.1) # slow down loop to use less CPU
listener.stop() # stop thread with listener
listener.join() # wait till thread ends work
显示您的代码和您在Google中找到的内容。似乎类似/相同:更多关于键盘的详细信息可在此处找到:当您按下键时,您可以设置变量
pressed=True
,当您释放按键时,您可以设置pressed=False
,在这两种方法之间,您可以检查pressed
以查看是否仍保持按键。@furas我是python新手,您能解释一下这看起来是如何构建的吗?您使用什么模块来按键?PyGame,pyglet,pynput,其他?
from pynput.keyboard import Listener, KeyCode
import time
# --- functions ---
def get_pressed(event):
global key_a # inform function to use external/global variable instead of local one
if event == KeyCode.from_char('a'):
key_a = True
def get_released(event):
global key_a
if event == KeyCode.from_char('a'):
key_a = False
# --- main --
key_a = False # default value at start
listener = Listener(on_press=get_pressed, on_release=get_released)
listener.start() # start thread with listener
while True:
if key_a:
print('hold pressed: a')
time.sleep(.1) # slow down loop to use less CPU
listener.stop() # stop thread with listener
listener.join() # wait till thread ends work