Python中keyboard库干扰input输入:如何实现干净输入?
解决Python keyboard库热键触发后输入框带入热键字符的问题
当用keyboard库把"p"设为热键触发输入操作时,输入框开头会自动带上"p"字符,示例代码如下:
import keyboard def print_your_name(): x = input("Enter Your Name: ") print(x) keyboard.add_hotkey('p', print_your_name) keyboard.wait("esc")
运行后输入提示会变成:
Enter Your Name:p
下面提供两种解决方法,能给用户提供干净的输入环境:
方法一:用退格键删除热键字符
利用短暂延迟让系统先处理热键字符的输入,再发送退格键删掉它:
import keyboard import time def print_your_name(): time.sleep(0.01) # 短延迟确保字符已输入到控制台 keyboard.press_and_release('backspace') x = input("Enter Your Name: ") print(x) keyboard.add_hotkey('p', print_your_name) keyboard.wait("esc")
这个方法简单直接,但延迟时间可能需要根据系统微调,避免因延迟不够导致删不掉字符。
方法二:拦截热键字符的默认输入行为
通过按键钩子从根源阻止热键字符输出到控制台,比退格法更可靠:
import keyboard def on_press(event): if event.name == 'p': return False # 返回False阻止该按键的默认输入行为 def print_your_name(): x = input("Enter Your Name: ") print(x) # 注册钩子拦截p键的默认输入 keyboard.on_press(on_press) keyboard.add_hotkey('p', print_your_name) keyboard.wait("esc")
这种方式下,按下p键只会触发热键函数,不会把p字符输出到输入框里,输入环境完全干净。
内容的提问来源于stack exchange,提问作者Mark Wasfy
相关产品推荐
相关产品推荐

