【问题标题】:Create Keyboard Shortcut?创建键盘快捷键?
【发布时间】:2017-08-05 14:07:16
【问题描述】:

我正在寻找一种在 Python 中创建跨平台键盘快捷键的方法。这样当我按下 Ctrl+C 或 Ctrl+Alt+F之类的东西时>,程序会运行某个函数。

是否存在这样的方法或库?

【问题讨论】:

  • 可能是一个过于简单化的问题,但您是在谈论在代码编辑期间创建键盘快捷键还是为用户与您的程序交互创建快捷键?
  • @MattR 用户与程序交互的快捷方式。例如,用户单击“Ctrl + F”,我会立即运行一组命令或函数。
  • 我会考虑在终端/CMD/ 或您的操作系统上创建一个快捷方式,然后将其绑定到 script.py,例如:superuser.com/questions/333758/…。如果我认为,您所要求的并不是真正的做事“方式”。
  • 这并不容易在终端中实现真正的跨平台,但如果你在具有跨平台 GUI 库的 GUI 中做到这一点,那就相当简单了;甚至 Tkinter 也能做到。

标签: python


【解决方案1】:

我不知道是否可以发送 Ctrl 和/或 alt 的组合。我尝试了几次,但我认为它不起作用。 (如果有人有任何其他信息,请纠正我)。你可以做的是这样的:

from msvcrt import getch

while True:
    key = ord(getch())
    if key == 27: #ESC
        PrintSomething()

def PrintSomething():
    print('Printing something')

这将在您每次按 ESC 时运行一个脚本,尽管它仅在您在命令提示符下运行时才有效。

【讨论】:

    【解决方案2】:

    您可以通过pynput 库为按键事件创建监听器。 这是一个简单的代码,当按下CTRL+ALT+H 键时运行一个函数:

    from pynput import keyboard
    
    def on_activate():
        print('Global hotkey activated!')
    
    def for_canonical(f):
        return lambda k: f(l.canonical(k))
    
    hotkey = keyboard.HotKey(
        keyboard.HotKey.parse('<ctrl>+<alt>+h'),
        on_activate)
    with keyboard.Listener(
            on_press=for_canonical(hotkey.press),
            on_release=for_canonical(hotkey.release)) as l:
        l.join()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-07-16
      • 1970-01-01
      相关资源
      最近更新 更多