我试图分别在按下鼠标按钮和释放鼠标按钮时保存鼠标的 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/