Python don';在击键之前我什么都不做

Python don';在击键之前我什么都不做,python,keystroke,Python,Keystroke,所以基本上我需要一个Python程序或一个模块,它只在按下一个特定的键时执行主程序,例如F10键。我发现的所有其他模块(例如getch)在按下任何键后都会执行 如果您已经在使用getch,您不妨在其上循环并等待您的键: while getch() != 'MAGIC KEY': pass 这将永远运行getch,直到用户按下所需的键。然后流继续正常运行。既然您提到了msvcrt,我就假设(Windows)。在Linux中你会做不同的事情 F10是一个2字节的返回,0068,所以。。。查

所以基本上我需要一个Python程序或一个模块,它只在按下一个特定的键时执行主程序,例如F10键。我发现的所有其他模块(例如getch)在按下任何键后都会执行

如果您已经在使用
getch
,您不妨在其上循环并等待您的键:

while getch() != 'MAGIC KEY':
    pass

这将永远运行
getch
,直到用户按下所需的键。然后流继续正常运行。

既然您提到了
msvcrt
,我就假设(Windows)。在Linux中你会做不同的事情

F10
是一个2字节的返回,
0068
,所以。。。查找第一个字节
00
,然后查找第二个字节
68
。还有一个2字节的返回,第一个字节有一个
224
,因此您也需要检查它

我在
kbhit()
上包含了一个块,因为如果让它在
getch()
上阻塞,它将拾取一个
Ctrl-C
,您将无法中断。阻止这一点会给你机会

如果您愿意,您可以使其更通用一些,这是针对
F10
的硬编码

import msvcrt

while True:
    if msvcrt.kbhit():
        first = ord(msvcrt.getch())     
        if first in (0, 224):
            second = ord(msvcrt.getch())
            if first == 0 and second == 68:
                break