Python 如何在Windows中按住SHIFT键时模拟鼠标单击?
您好,我正试图在按住SHIFT键的同时模拟鼠标单击。我一直在尝试使用Python 如何在Windows中按住SHIFT键时模拟鼠标单击?,python,keyboard,mouse,pyautogui,pynput,Python,Keyboard,Mouse,Pyautogui,Pynput,您好,我正试图在按住SHIFT键的同时模拟鼠标单击。我一直在尝试使用pynput模块来实现这一点 这是我目前的代码: from pynput.keyboard import Key from pynput.keyboard import Controller as Cont from pynput.mouse import Button, Controller import time mouse = Controller() keyboard = Cont() with keyboard.p
pynput
模块来实现这一点
这是我目前的代码:
from pynput.keyboard import Key
from pynput.keyboard import Controller as Cont
from pynput.mouse import Button, Controller
import time
mouse = Controller()
keyboard = Cont()
with keyboard.pressed(Key.shift):
mouse.position = (1892, 838)
mouse.click(Button.left)
我知道按住shift键的代码正在工作(如果我尝试按下
“a”按钮在代码中我看到一个“a”)。我也知道鼠标点击是有效的。然而,这两者结合起来是行不通的
我还尝试了StackOverflow帖子中的另一个代码: 我从中尝试了以下代码:
import pyautogui
pyautogui.keyDown('shift')
pyautogui.click()
pyautogui.keyUp('shift')
它工作了一分钟,然后就停止工作了!很奇怪。10次中有9次失败。我建议的一种解决方法是创建一个事件侦听器,如下所示:
from pynput.keyboard import Key, Listener
def on_press(key):
print('{0} pressed'.format(
key))
def on_release(key):
print('{0} release'.format(
key))
if key == Key.esc:
# Stop listener
return False
enter code hereCollect events until released
with Listener(
on_press=on_press,
on_release=on_release) as listener:
listener.join()
脚本按预期工作,但您尝试应用Shift+左键单击的目标似乎不接受此类输入,而其Windows GUI上的窗口未处于焦点位置。这就是为什么在按住Shift键并单击鼠标左键之前单击鼠标左键会起作用的原因,因为第一次单击会使目标窗口(无论它是什么程序/应用程序)处于焦点位置,那么已经工作但被忽略的按住Shift键并单击鼠标左键也会被目标接受。您应该为它添加一个计时器,它很可能会工作
import pyautogui
import time
#cordinates
cordinates = 100,100
pyautogui.keyDown('shift')
time.sleep(0.15)
pyautogui.click(cordinates)
time.sleep(0.15)
pyautogui.keyUp('shift')
尝试
鼠标。按(按钮。左)
然后鼠标。释放(按钮。左)
。不过,这只是一个猜测,基于Windows事件通常的工作方式。已经尝试过了。它不起作用。谢谢你和我一起思考@Blorgbeard yesIt起作用,但它不起作用。这就像偶尔发生一样。@finefoot你是对的。目标就是问题所在。不知何故,只有在开始使用shift+click之前单击目标时,它才会起作用。我认为这是不必要的。但似乎是这样。如果你回答,我就接受。我觉得既然你帮我解决了问题,那你就活该!OP想要发送输入,而不是接收输入。依我的拙见,OP代码的问题在于他没有“发现”触发事件以进入循环并发送点击,希望我现在说清楚。