你好,我试图按住 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')
这工作了一分钟,然后停止工作!很奇怪。失败的可能性是十分之九。
答案 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()```