按下键时监视鼠标坐标

Monitoring mouse coordinate while a key is pressed

我正在尝试使用一些快速命令 windows 模拟 Dota 2 或战地的聊天轮盘 like this。

应该是这样的: 按下 G 键时 - 带有某些部分的滚轮出现在屏幕中央,鼠标以其为中心,如果我将鼠标移动到 side_1 然后释放 G 键 -> func_1 执行。 如果它在 side_2 -> func_2。 如果我在中央松开 G 键 -> 滚轮消失,什么也没有发生。

所以为了监控鼠标的 X Y 坐标,我使用以下代码:

from pynput import mouse
    
def on_move(x, y):
    print(x, y)
    
    
# Collect events until released
with mouse.Listener(on_move=on_move) as listener:
    listener.join()

当我移动鼠标时,它是垃圾坐标。 但是我卡在了我需要的部分:

  1. 从另一个 .py 文件启动侦听器并将这些坐标用于程序的可视部分(例如用命令描述突出显示轮子的一侧),

  2. 从另一个 .py 文件关闭监听器,并在释放 G 键时获取鼠标的最后坐标,以与函数规定的 tge 坐标范围进行比较。

你想要这样的东西:

from pynput import mouse, keyboard
import time


def on_press(key):
    print("pressed {}".format(key))

def on_release(key):
    print("released {}".format(key))

def on_move(x,y):
    print((x,y))


mouse_listener = mouse.Listener(
    on_move=on_move)
mouse_listener.start()

key_listener = keyboard.Listener(
    on_press=on_press,
    on_release=on_release)
key_listener.start()

# prevent the script from exiting immediately
time.sleep(10)
import time
import keyboard

from pynput.mouse import Controller

def get_xy():
    mouse = Controller()
    mouse_coord = str(mouse.position)
    mouse_coord = mouse_coord.replace("(", "")
    mouse_coord = mouse_coord.replace(")", "")
    mouse_coord = mouse_coord.replace(",", "")
    mouse_coord = mouse_coord.split(" ")
    mouse_x = int(mouse_coord[0])
    mouse_y = int(mouse_coord[1])
    print(mouse_x, mouse_y)

while True:
    if keyboard.is_pressed('b'):
        get_xy()
        time.sleep(0.01)

输出示例:654 326