49 votes

Comment obtenir la position du curseur de texte dans Windows ?

Est-il possible d'obtenir la position globale du curseur dans Windows en utilisant les bibliothèques Python standard ?

2 votes

Pour une question qui demande que cela soit fait en utilisant les bibliothèques Python standard, il n'y a pas vraiment de solution. La réponse choisie nécessite l'installation de modules supplémentaires. Je dis cela parce qu'en googlant la question, on arrive directement ici. (Vous POUVEZ utiliser tkinter, mais cela nécessite que vous ayez une instance( ?) de tkinter qui tourne en même temps AFAIK).

2 votes

C'est déprimant de voir que 99% de la population de programmation semble penser que "cursor position" est la même chose que position de la souris/pointeur alors que rien ne peut être plus éloigné la vérité . Dans ce PO, l'utilisateur demande la position "texte", pas la position graphique. Coordonnées (x,y) du pointeur.

61voto

Micrified Points 1240

En utilisant la bibliothèque standard ctypes, cela devrait donner les coordonnées actuelles de la souris à l'écran. sans modules tiers :

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)

Je dois mentionner que ce code a été tiré d'un exemple trouvé aquí Le mérite revient donc à Nullege.com pour cette solution.

2 votes

Bahaha, je viens de trouver le même extrait chez Nullege quand je faisais mes recherches. Mais cela devrait être la réponse acceptée car elle n'utilise pas de code tiers et fonctionne comme un charme.

3 votes

J'ai apporté un correctif à ce problème, car il provoque un bug que les gens ne remarquent peut-être pas immédiatement : les positions du curseur sont signées, et non pas non signées, et peuvent être négatives si la souris se trouve sur un moniteur à gauche du moniteur principal. Avec "c_ulong", vous finissez par obtenir des coordonnées comme 4294967196 au lieu de -100. (Cela peut aussi arriver verticalement, mais c'est moins fréquent).

0 votes

Un commentaire sur ce qui se passe dans ce code étape par étape ?

34voto

pyfunc Points 31088
win32gui.GetCursorPos(point)

Ceci récupère la position du curseur, en coordonnées d'écran - point = (x,y)

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

Récupère des informations sur le curseur global.

Liens :

Je suppose que vous utilisez les liaisons API python win32 ou pywin32.

0 votes

Je suppose que cela ne fonctionne pas pour Ubuntu. Est-ce exact ?

15voto

Michał Niklas Points 15907

Vous ne trouverez pas une telle fonction dans les bibliothèques Python standard, alors que cette fonction est spécifique à Windows. Cependant si vous utilisez ActiveState Python, ou si vous installez simplement win32api à l'installation standard de Python Windows que vous pouvez utiliser :

x, y = win32api.GetCursorPos()

3 votes

Installez ceci par pip install pypiwin32

0 votes

Le nom propre de la paquet à installer est pywin32 (pas de py pi win32).

0 votes

Les deux fonctionnent, pypiwin32 est très bien.

7voto

rectangletangle Points 4748

J'ai trouvé un moyen de le faire qui ne dépend pas de bibliothèques non standard !

J'ai trouvé ceci dans Tkinter

self.winfo_pointerxy()

1 votes

NameError : le nom 'self' n'est pas défini

2 votes

En fait, il faut d'abord créer une instance. C'est comme ça, p=Tkinter.Tk() et finalement vous obtenez p.winfo_pointerxy() qui renvoie un tuple de la position actuelle du curseur :)

7voto

Abhinav Points 43

Utilisation de pyautogui

Pour installer

pip install pyautogui

et pour trouver l'emplacement du pointeur de la souris

import pyautogui
print(pyautogui.position())

Cela donnera l'emplacement du pixel sur lequel se trouve le pointeur de la souris.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X