当我将
suppress=True
设置为 pynput.keyboard.Listener
并最小化程序窗口时,它会阻止系统监听键盘。
是否可以仅在我的程序窗口处于活动状态时阻止系统监听键盘?
您可以使用
pywinctl
,它适用于 Linux、MacOS,当然还有 Windows。在这里,我将 pynput
侦听器合并到循环中,其中函数检查窗口是打开还是关闭。这是一段代码:
from pynput.keyboard import Listener
import pywinctl
def py_is_opened():
if program_window_name == pywinctl.getActiveWindowTitle():
return True
else:
return False
def on_press(key):
if not py_is_opened(): #if the window is not opened (closed currently)
return False #stops the listener
#do stuff with key
while True:
with Listener(on_press=on_press, suppress=True) as listener:
listener.join()
while True:
if py_is_opened():
break #start the listener again if program is opened
此代码检查窗口是否打开,如果是,则抑制键盘输入并监听它。如果不是,程序不会抑制按键,也不会侦听任何键盘输入。请注意,您需要将变量
program_window_name
替换为您的程序名称,在我的例子中,它是:'*IDLE Shell 3.12.1*'
。要弄清楚这一点,请运行这个简单的测试:
import pywinctl
print(pywinctl.getActiveWindowTitle())
运行该程序时,请记住使程序保持活动窗口。然后,您将看到窗口标题。只需将变量替换为您从该程序获得的窗口标题,一切就应该按计划进行。