我发现这个Controlling mouse with Python这个问题在创建脚本以移动鼠标并使用Python单击鼠标时非常有用。是否也可以创建鼠标滚动事件?另外,前进和后退按钮怎么样?
答案 0 :(得分:3)
仅针对“已故”观众,这需要您更改第4个参数dwData
...
我认为它看起来像这样:
import win32api
from win32con import *
#Scroll one up
win32api.mouse_event(MOUSEEVENTF_WHEEL, x, y, 1, 0)
#Scroll one down
win32api.mouse_event(MOUSEEVENTF_WHEEL, x, y, -1, 0)
#Scroll one to the right
win32api.mouse_event(MOUSEEVENTF_HWHEEL, x, y, 1, 0)
#Scroll one to the left
win32api.mouse_event(MOUSEEVENTF_HWHEEL, x, y, -1, 0)
<小时/> 更多信息? win-api文档非常好:
答案 1 :(得分:1)
使用pygame包可以更轻松地完成此操作。您需要确保在python库中安装了pygame包。要下载它,请单击链接:
http://www.pygame.org/download.shtml
看起来应该是这样的:
import pygame
pygame.init()
def main():
While true:
for event in pygame.event.get():
if event.type == pygame.MOUSEBUTTONDOWN:
if event.button == 1:
print ("You pressed the left mouse button.")
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_ESCAPE:
pygame.quit()
quit()
main()
运行上面的代码时,它会告诉您按下鼠标左键时按下了鼠标左键。完成后按Esc键停止它。此方法存储事件列表,并按照发生的顺序对其进行测试。如果找到一个被按下的,它将在if语句中运行它后面的代码,然后将其从列表中删除。
要使用滚轮,只需替换行上的数字1:
if event.button == 1:
将其替换为4以向前滚动,将5替换为向后滚动。
答案 2 :(得分:1)
我真的很为此挣扎,所以我认为我应该发布Windows
的解决方案。
快速pip install pywin32
之后,我可以访问必要的win32api
和win32con
等。
注意::我上次检查时,pywin32仅受以下支持:
import time
import win32api
import win32con
def scroll(clicks=0, delta_x=0, delta_y=0, delay_between_ticks=0):
"""
Source: https://docs.microsoft.com/en-gb/windows/win32/api/winuser/nf-winuser-mouse_event?redirectedfrom=MSDN
void mouse_event(
DWORD dwFlags,
DWORD dx,
DWORD dy,
DWORD dwData,
ULONG_PTR dwExtraInfo
);
If dwFlags contains MOUSEEVENTF_WHEEL,
then dwData specifies the amount of wheel movement.
A positive value indicates that the wheel was rotated forward, away from the user;
A negative value indicates that the wheel was rotated backward, toward the user.
One wheel click is defined as WHEEL_DELTA, which is 120.
:param delay_between_ticks:
:param delta_y:
:param delta_x:
:param clicks:
:return:
"""
if clicks > 0:
increment = win32con.WHEEL_DELTA
else:
increment = win32con.WHEEL_DELTA * -1
for _ in range(abs(clicks)):
win32api.mouse_event(win32con.MOUSEEVENTF_WHEEL, delta_x, delta_y, increment, 0)
time.sleep(delay_between_ticks)
然后,在定义之后
click_point = x_position, y_position
然后使用
pyautogui.moveTo(x=click_point[0], y=click_point[1], duration=0.25)
确保鼠标位于正确的位置。我只是调用上面的scroll
函数:
scroll(-4, 0.1)
向下滚动4个刻度,每个刻度之间延迟100毫秒。
答案 3 :(得分:0)
生成滚动事件,使用带有MOUSEEVENTF_WHEEL的mouse_event方法。对于其他事件,例如前进/后退按钮,取决于鼠标的设置方式以及触发它的按钮。请参阅msdn document on this for a list of possible values。