You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pynput mouse.move()函数触达屏幕边缘时无法停止的问题求助

问题:Pynput mouse.move() 移出屏幕边缘的限制问题

使用Pynput的mouse.move()函数时,鼠标触达屏幕边缘后仍会继续移动,打印的位置会持续变为负数。示例代码如下:

from pynput.mouse import Controller
import time

mouse = Controller()

while 1:
    mouse.move(0,-10)
    print(mouse.position)
    time.sleep(2)

想了解Pynput或其他Python包是否有内置功能,避免光标在mouse.move()指令作用下移出屏幕(已知可手动根据屏幕尺寸限制,但希望用内置实现)。


解决方案

Pynput 无内置边界限制

Pynput的mouse.move()仅发送相对位移指令,不会自动检测或限制屏幕边界。如果坚持用Pynput,只能手动实现边界截断,步骤如下:

  1. 获取屏幕尺寸(可借助screeninfo库)
  2. 计算新位置后,将坐标限制在屏幕范围内
  3. 设置鼠标绝对位置替代相对移动

示例代码:

from pynput.mouse import Controller
import time
import screeninfo

mouse = Controller()
# 获取主屏幕的宽高
main_screen = screeninfo.get_monitors()[0]
max_x, max_y = main_screen.width - 1, main_screen.height - 1

while True:
    curr_x, curr_y = mouse.position
    new_x = curr_x
    new_y = curr_y - 10
    # 截断坐标到屏幕范围内
    new_x = max(0, min(new_x, max_x))
    new_y = max(0, min(new_y, max_y))
    mouse.position = (new_x, new_y)
    print(mouse.position)
    time.sleep(2)

替代方案:使用PyAutoGUI

PyAutoGUI的moveRel()函数默认内置屏幕边界限制,无需额外处理。当鼠标到达屏幕边缘后,后续的移动指令不会让坐标超出范围。

示例代码:

import pyautogui
import time

while True:
    pyautogui.moveRel(0, -10)
    print(pyautogui.position())
    time.sleep(2)

内容的提问来源于stack exchange,提问作者gna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 11:05:24