python - pynput 鼠标位置坐标到变量以及在全局范围内使用变量

标签 python mouse pyautogui pynput

我试图分别在按下鼠标按钮和释放鼠标按钮时保存鼠标的 x 和 y 坐标。我可以打印它们,但无法将它们保存到变量中。

这是我得到的:

from pynput.mouse import Listener

def on_click(x, y, button, pressed):
    print('{0} at {1}'.format(
        'Pressed' if pressed else 'Released',
        (x, y)))
    if not pressed:
        # Stop listener
        return False

with Listener(on_click=on_click) as listener:
    listener.join()

然后我如何在全局范围内调用这些变量以与另一个模块一起使用(例如 pyautogui?)

最佳答案

你已经把所有东西都准备好了,所以我只需要添加几行。全局变量并不是非常最好的做事方式,但是由于这个程序不太复杂,所以它们可以完成这项工作。

down_x等的初始值并不重要,因为它们会被覆盖,但它们必须存在,否则Python会抛出错误。

#if you want to delay between mouse clicking, uncomment the line below
#import time
from pynput.mouse import Listener
import pyautogui

down_x = down_y = up_x = up_y = -1

def on_click(x, y, button, pressed):
    global down_x
    global down_y
    global up_x
    global up_y
    if pressed:
        (down_x, down_y) = (x, y)
    else:
        (up_x, up_y) = (x, y)
        return False

with Listener(on_click=on_click) as listener:
    listener.join()

print("Mouse drag from", down_x, ",", down_y, "to", up_x, ",", up_y)

# you may wish to import the time module to make a delay
#time.sleep(1)
pyautogui.mouseDown(down_x, down_y)
#time.sleep(1)
pyautogui.mouseUp(up_x, up_y)

关于python - pynput 鼠标位置坐标到变量以及在全局范围内使用变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51436280/

相关文章:

python - 使用 python pandas 选择组中的特定值

python - 如何在 Numpy 中实现垃圾回收

java - 从弹出菜单中捕获鼠标 XY 位置

python - 无法在 python 中的 typewrite 函数中传递变量

python - Windows - 无法通过 pip 安装 pyautogui - 错误 : Command "python setup.py egg_info" failed with error code 1

python - 将逻辑曲线拟合到数据

java - 使用 java ProcessBuilder 从批处理文件运行 python 脚本不起作用

javascript - 当鼠标悬停在页面加载时的框上时,停止 jQuery 运行

javascript - 如何在javascript中检测鼠标加速度?

python - Windows - Python,检查程序是否打开,如果是,从任务栏打开它?