Получение позиции курсора в Python - PullRequest
26 голосов
/ 13 сентября 2010

Можно ли получить общую позицию курсора в Windows, используя стандартные библиотеки Python?

Ответы [ 6 ]

29 голосов
/ 04 июля 2014

Используя стандартную библиотеку ctypes, это должно дать текущие координаты мыши на экране без каких-либо сторонних модулей :

from ctypes import windll, Structure, c_long, byref


class POINT(Structure):
    _fields_ = [("x", c_long), ("y", c_long)]



def queryMousePosition():
    pt = POINT()
    windll.user32.GetCursorPos(byref(pt))
    return { "x": pt.x, "y": pt.y}


pos = queryMousePosition()
print(pos)

Я должен упомянуть, что этот код был взят из примеранайдено здесь Таким образом, кредит Nullege.com для этого решения.

23 голосов
/ 13 сентября 2010
win32gui.GetCursorPos(point)

Возвращает позицию курсора в координатах экрана - точка = (x, y)

flags, hcursor, (x,y) = win32gui.GetCursorInfo()

Извлекает информацию о глобальном курсоре.

Ссылки:

Я предполагаю, что вы будете использовать привязки Python Win32 API или pywin32.

11 голосов
/ 13 сентября 2010

Вы не найдете такую ​​функцию в стандартных библиотеках Python, хотя эта функция специфична для Windows. Однако если вы используете ActiveState Python или просто устанавливаете модуль win32api в стандартную установку Python для Windows, вы можете использовать:

x, y = win32api.GetCursorPos()
5 голосов
/ 13 сентября 2010

Я нашел способ сделать это, не зависящий от нестандартных библиотек!

Нашел это в Ткинтере

self.winfo_pointerxy()
3 голосов
/ 05 апреля 2016

Необходимые условия

Установка Tkinter.Я включил win32api для решения только для Windows.

Скрипт

#!/usr/bin/env python

"""Get the current mouse position."""

import logging
import sys

logging.basicConfig(format='%(asctime)s %(levelname)s %(message)s',
                    level=logging.DEBUG,
                    stream=sys.stdout)


def get_mouse_position():
    """
    Get the current position of the mouse.

    Returns
    -------
    dict :
        With keys 'x' and 'y'
    """
    mouse_position = None
    import sys
    if sys.platform in ['linux', 'linux2']:
        pass
    elif sys.platform == 'Windows':
        try:
            import win32api
        except ImportError:
            logging.info("win32api not installed")
            win32api = None
        if win32api is not None:
            x, y = win32api.GetCursorPos()
            mouse_position = {'x': x, 'y': y}
    elif sys.platform == 'Mac':
        pass
    else:
        try:
            import Tkinter  # Tkinter could be supported by all systems
        except ImportError:
            logging.info("Tkinter not installed")
            Tkinter = None
        if Tkinter is not None:
            p = Tkinter.Tk()
            x, y = p.winfo_pointerxy()
            mouse_position = {'x': x, 'y': y}
        print("sys.platform={platform} is unknown. Please report."
              .format(platform=sys.platform))
        print(sys.version)
    return mouse_position

print(get_mouse_position())
1 голос
/ 12 мая 2019

Использовать pygame

import pygame

mouse_pos = pygame.mouse.get_pos()

Возвращает положение мыши по x и y.

Смотрите этот сайт: https://www.pygame.org/docs/ref/mouse.html#pygame.mouse.set_pos

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...