📌  相关文章
📜  如何使用Python检测是否按下了特定键?

📅  最后修改于: 2022-05-13 01:54:55.293000             🧑  作者: Mango

如何使用Python检测是否按下了特定键?

在本文中,我们将学习如何检测用户是否按下了特定键。检测键对编码人员来说非常重要,因为程序的整个执行仅依赖于单个/模式按键。
在日常生活中,您可能会体验到,当您在输入 PIN 码后按下回车键时,可以接受或拒绝整个 ATM 交易。同样,您将在日常生活中看到许多活生生的例子。
整个模块分为 3 段,第 1 段处理简单整数,第 2 段字母数字字符,第 3 段我们将使用Python模块来检测密钥。

方法一:使用pynput。

在此方法中,我们将使用 pynput Python模块来检测任何按键按下。 “pynput.keyboard”包含用于控制和监视键盘的类。它调用 pynput.keyboard.Listener。从任何地方停止,或从回调返回 False 以停止侦听器。该库允许您控制和监视输入设备。

方法:

  • 从 pynput.keyboard 导入密钥、侦听器
  • 创建 with 语句: with 语句用于用上下文管理器定义的方法包装块的执行。
  • 定义函数

对于安装,将此代码运行到您的终端中。

pip install pynput

示例 1:在这里您将看到正在按下哪个键。

Python3
from pynput.keyboard import Key, Listener
  
def show(key):
  
    print('\nYou Entered {0}'.format( key))
  
    if key == Key.delete:
        # Stop listener
        return False
  
# Collect all event until released
with Listener(on_press = show) as listener:   
    listener.join()


Python3
from pynput.keyboard import Key, Listener
  
def show(key):
    
    if key == Key.tab:
        print("good")
          
    if key != Key.tab:
        print("try again")
          
    # by pressing 'delete' button 
    # you can terminate the loop 
    if key == Key.delete: 
        return False
  
# Collect all event until released
with Listener(on_press = show) as listener:
    listener.join()


Python3
for _ in range(3):
  
    user_input = input(" Please enter your lucky word or type 'END' to terminate loop: ")
      
    if user_input == "geek":
        print("You are really a geek")
        break
  
    elif user_input == "END":
        break
  
    else:
        print("Try Again")


输出:

示例 2:在这里您可以检测特定键是否被按下。

蟒蛇3

from pynput.keyboard import Key, Listener
  
def show(key):
    
    if key == Key.tab:
        print("good")
          
    if key != Key.tab:
        print("try again")
          
    # by pressing 'delete' button 
    # you can terminate the loop 
    if key == Key.delete: 
        return False
  
# Collect all event until released
with Listener(on_press = show) as listener:
    listener.join()

输出:

方法二:

这里我们从用户那里获取输入并检测用户输入了指定的字母数字(代表数字 0 – 9 的字符、字母 A – Z(大写和小写)以及一些常见的符号,例如 @#* 和&。) 或不。

方法:

  • 接受用户输入
  • 创建一个循环
  • 使用条件
  • 打印输出

代码:

蟒蛇3

for _ in range(3):
  
    user_input = input(" Please enter your lucky word or type 'END' to terminate loop: ")
      
    if user_input == "geek":
        print("You are really a geek")
        break
  
    elif user_input == "END":
        break
  
    else:
        print("Try Again")

输出: