Getting cursor position in Python

后端 未结 11 1118
旧巷少年郎
旧巷少年郎 2020-12-02 22:29

Is it possible to get the overall cursor position in Windows using the standard Python libraries?

相关标签:
11条回答
  • 2020-12-02 23:17

    For Mac using native library:

    import Quartz as q
    q.NSEvent.mouseLocation()
    
    #x and y individually
    q.NSEvent.mouseLocation().x
    q.NSEvent.mouseLocation().y
    

    If the Quartz-wrapper is not installed:

    python3 -m pip install -U pyobjc-framework-Quartz
    

    (The question specify Windows, but a lot of Mac users come here because of the title)

    0 讨论(0)
  • 2020-12-02 23:18

    Prerequisites

    Install Tkinter. I've included the win32api for as a Windows-only solution.

    Script

    #!/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())
    
    0 讨论(0)
  • 2020-12-02 23:21

    This could be a possible code for your problem :

    # Note you  need to install PyAutoGUI for it to work
    
    
    import pyautogui
    w = pyautogui.position()
    x_mouse = w.x
    y_mouse = w.y
    print(x_mouse, y_mouse)
    
    0 讨论(0)
  • 2020-12-02 23:25
    sudo add-apt-repository ppa:deadsnakes
    sudo apt-get update
    sudo apt-get install python3.5 python3.5-tk
    # or 2.7, 3.6 etc
    # sudo apt-get install python2.7 python2.7-tk
    
    # mouse_position.py
    import Tkinter
    p=Tkinter.Tk()
    print(p.winfo_pointerxy()
    

    Or with one-liner from the command line:

    python -c "import Tkinter; p=Tkinter.Tk(); print(p.winfo_pointerxy())"
    (1377, 379)
    
    0 讨论(0)
  • 2020-12-02 23:29

    Use pygame

    import pygame
    
    mouse_pos = pygame.mouse.get_pos()
    

    This returns the x and y position of the mouse.

    See this website: https://www.pygame.org/docs/ref/mouse.html#pygame.mouse.set_pos

    0 讨论(0)
提交回复
热议问题