输入问题

  • 本文关键字:问题 python pynput
  • 更新时间 :
  • 英文 :


我试图制作一个程序,只按一个键就可以打印出一个句子,但是如果这个句子包含那个特定的键,它就会开始无限次输入那个句子。我想找到一种方法来忽略输入的pynput,但不是从我的键盘。提前谢谢。

代码:

from pynput.keyboard import Key, Listener, Controller
kb = Controller()

def on_press(key):
if not 'char' in dir(key):
return
if key.char == "s":
kb.press(Key.backspace) # deletes "s"
kb.release(Key.backspace)
kb.type("sample")
return

def on_release(key):
if key == Key.esc:
return False

with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()

输出:samplsamplsamplsampl…

一个简单的解决方案是引入一个全局变量作为锁定机制:

from pynput.keyboard import Key, Listener, Controller
kb = Controller()
lock = False
def on_press(key):
global lock
if not hasattr(key, 'char'):
return
if lock:
return
if key.char == "s":
lock = True
kb.press(Key.backspace) # deletes "s"
kb.release(Key.backspace)
kb.type("sample")
lock = False
return

def on_release(key):
if key == Key.esc:
return False

with Listener(on_press=on_press, on_release=on_release) as listener:
listener.join()

这样可以避免在键入键的过程中响应按键。

最新更新