如何在Windows中按住SHIFT键的同时模拟鼠标单击?

时间:2019-06-06 00:04:06

标签: 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.pressed(Key.shift):
    mouse.position = (1892, 838)
    mouse.click(Button.left)

我知道按住Shift键的代码可以正常工作(如果我尝试按 代码中的“ a”按钮,我看到一个“ A”)。我也知道鼠标单击正在工作。但是,总的来说这是行不通的。


我还尝试了StackOverflow帖子中的另一个代码:Pyautogui - Need to hold shift and click

我尝试了以下代码:

import pyautogui

pyautogui.keyDown('shift')
pyautogui.click()
pyautogui.keyUp('shift')

这工作了一分钟,然后停止工作!很奇怪。失败的可能性是十分之九。

3 个答案:

答案 0 :(得分:0)

脚本按预期工作,但似乎您要尝试对其应用 Shift + 左击 target 在Windows GUI上的窗口未聚焦时输入此类信息。这就是为什么当您在 Shift + Left-Click 之前包含 Left-Click 时,它起作用的原因,因为第一次单击将目标窗口置于( (无论它是什么程序/应用),那么 target 也会接受已经运行但被忽略的 Shift + 左击

答案 1 :(得分:0)

您应该向其中添加一个计时器,该计时器很可能会起作用。

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

答案 2 :(得分:-1)

一种好的解决方法,我建议创建一个这样的事件侦听器:


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