我想在Pynput模块中使用鼠标侦听器来监视click事件。蚂蚁会根据事件状态,触发一个功能。但是事件状态似乎有问题。
from pynput.keyboard import Controller, Key, Listener
from pynput import mouse
from pynput import keyboard
import pythoncom
from ctypes import *
flag = False
def on_right_click(x, y, button, pressed):
global flag
# boolFlag = False
button_name = ''
if button == mouse.Button.right:
user32 = windll.LoadLibrary('user32.dll')
if flag == True:
user32.BlockInput(False)
flag = False
else:
user32.BlockInput(True)
flag = True
print(flag)
button_name = 'Right Button'
elif button == mouse.Button.left:
button_name = 'Left Button'
if pressed:
print('{0} is pressed at {1}, {2}'.format(button_name, x, y))
if not pressed:
return False
while True:
with mouse.Listener(on_click=on_right_click) as listener:
listener.join()
通常,Flag会更改一次,并会触发BlockInput函数,但实际结果如下:
True
Right Button is pressed at 3478, 303
False
那么,为什么将标志更改两次?
答案 0 :(得分:0)
系统创建两个事件
"press"
"release"
。在其他程序中,"click"
仅在一个事件中运行(我不确定,但可以是"release"
),但是此处,侦听器对两个事件运行相同的功能。所以最后您可以看到两条消息。
但是对于键盘的侦听器,press
和release
使用分开的方法。
两个鼠标事件均用于在屏幕上拖动/移动元素。