【问题标题】:Is it possible to create a custom Keyboard Interrupt key in Python?是否可以在 Python 中创建自定义键盘中断键?
【发布时间】:2022-01-27 05:34:19
【问题描述】:

我正在编写一个具有无限循环的 python 脚本,为了停止我使用通常的键盘中断键 Ctrl+c 但我想知道我是否可以一旦程序可以停止,按 空格 设置我自己的喜欢我希望它具有与 Ctrl+c 相同的功能 那么如果可以的话,我该如何分配呢?

【问题讨论】:

  • 嗯,这更像是设置终端/IDE/其他的问题。有些可能具有重新绑定键的功能。
  • 看这里是我的问题,我想在脚本中设置这样任何有权访问代码的人都会按下相同的通用按钮来搜索代码
  • 有很多方法可以解决这个问题: 1. 设置你的终端/IDE(我可能会提供帮助) 2. 创建一个全局键绑定(我可以推荐一个库以及如何使用它) 3. 在一个线程中查看 STDIN(不知道你会怎么做)
  • 你的意思是像任务的热键一样创建
  • 你说的是哪一个?

标签: python loops while-loop keyboard keyboardinterrupt


【解决方案1】:
from pynput.keyboard import Listener
     while True:
         if keyboard.is_pressed("space"):
             exit()

【讨论】:

    【解决方案2】:

    用于创建键盘侦听器 (Based on Jimmy Fraiture's answer and comments),并在 Space 上使用 exit() (Suggested here) 停止脚本

    from pynput.keyboard import Listener
    
    def on_press(key):
        # If Space was pressed (not pressed and released), stop the execution altogether 
        if (key == Key.space):
            print('Stopping...')
            exit()
    
    with Listener(on_press=on_press) as listener:
        listener.join()
    
    
    while True:
        print('Just doing my own thing...\n')
    

    【讨论】:

    • 谢谢你,我现在就试试这个,让你知道
    • 那行不通
    • 按照here 的建议,您必须创建另一个线程来负责监听器。但这让我认为您将不得不使用我在答案中链接的其他一些“停止”命令,因为现在您不仅想杀死侦听器,而且 线程正在执行您的 while -循环。
    【解决方案3】:

    您可以添加一个侦听器来检查您的按键何时被按下,然后停止您的脚本

    from pynput.keyboard import Listener
    
    def on_press(key):
        # check that it is the key you want and exit your script for example
    
    with Listener(on_press=on_press) as listener:
        listener.join()
    
    # do your stuff here
    while True:
        pass
    

    【讨论】:

    • 所以在 def 函数中我放了我要分配的键?
    • 它不工作你能把它应用到这个代码上,这样我就可以看到它是如何工作的online-python.com/L9lTSey4GH
    • def on_press(key): if key == keyboard.Key.esc: raise KeyboardInterrupt
    • 你不能让它在在线执行器上工作,因为密钥是由导航器管理的
    • 是的,即使代码不起作用,也只需编写代码,因为我似乎无法理解我应该如何安排代码
    猜你喜欢
    • 1970-01-01
    • 2020-12-18
    • 1970-01-01
    • 2012-12-26
    • 2012-01-09
    • 1970-01-01
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多