pynput:仅在窗口处于活动状态时监听

问题描述 投票:0回答:1

当我将

suppress=True
设置为
pynput.keyboard.Listener
并最小化程序窗口时,它会阻止系统监听键盘。

是否可以仅在我的程序窗口处于活动状态时阻止系统监听键盘?

python python-3.x keyboard-events pynput
1个回答
0
投票

您可以使用

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())

运行该程序时,请记住使程序保持活动窗口。然后,您将看到窗口标题。只需将变量替换为您从该程序获得的窗口标题,一切就应该按计划进行。

© www.soinside.com 2019 - 2024. All rights reserved.