Fonctions de souris (Mouse)
classe Mouse
La classe Mouse
est utilisée pour collecter les entrées de la souris. Vous créez généralement un
objet Mouse
avec la fonction usine Mouse()
, comme décrit dans la section Créer une souris.
Exemple
# Dessinez un 'curseur mouse fixation-dot' jusqu'à ce qu'un bouton soit cliqué
ma_souris = Mouse()
mon_canvas = Canvas()
while True:
bouton, position, horodatage = ma_souris.get_click(timeout=20)
if bouton is not None:
break
(x,y), temps = ma_souris.get_pos()
mon_canvas.clear()
mon_canvas.fixdot(x, y)
mon_canvas.show()
Choses à savoir
Créer une souris
Vous créez généralement une Mouse
avec la fonction usine Mouse()
:
ma_souris = Mouse()
Facultativement, vous pouvez passer les mots-clés Response à Mouse()
pour définir le comportement par défaut:
ma_souris = Mouse(timeout=2000)
Coordonnées
- Lorsque Coordonnées uniformes est réglé sur 'oui', les coordonnées sont relatives au centre de l'affichage. C'est-à-dire, (0,0) est le centre. Ceci est la valeur par défaut à partir d'OpenSesame 3.0.0.
- Lorsque Coordonnées uniformes est réglé sur 'non', les coordonnées sont relatives à haut-gauche de l'affichage. C'est-à-dire, (0,0) est en haut à gauche. C'était la valeur par défaut dans OpenSesame 2.9.X et versions antérieures.
Numéros de boutons
Les boutons de la souris sont numérotés comme suit:
- Bouton gauche
- Bouton du milieu
- Bouton droit
- Défilement vers le haut
- Défilement vers le bas
Écrans tactiles
Lors de l'utilisation d'un écran tactile, un toucher est enregistré en tant que bouton 1 (bouton gauche).
Mots-clés de réponse
Les fonctions qui acceptent **resp_args
prennent les arguments de mots-clés suivants :
timeout
spécifie une valeur de délai en millisecondes ou est défini surNone
pour désactiver le délai.buttonlist
spécifie une liste de boutons qui sont acceptés ou est défini surNone
accepter tous les boutons.visible
indique si le curseur de la souris devient visible lorsqu'un clic est collecté (True
ouFalse
). Pour modifier immédiatement la visibilité du curseur, utilisezMouse.show_cursor()
.
# Obtenir un appui sur le bouton gauche ou droit avec un délai de 3000 ms
ma_souris = Mouse()
bouton, heure = ma_souris.get_click(buttonlist=[1,3], timeout=3000)
Les mots-clés de réponse n'affectent que l'opération en cours (sauf lorsqu'ils sont passés à
Mouse()
lors de la création de l'objet). Pour modifier le comportement pour toutes les opérations ultérieures, définissez les propriétés de réponse directement:
# Obtenir deux pressions gauche ou droite avec un délai de 5000 ms
ma_souris = Mouse()
ma_souris.buttonlist = [1,3]
ma_souris.timeout = 5000
bouton1, temps1 = ma_souris.get_click()
bouton2, temps2 = ma_souris.get_click()
Ou passez les mots-clés de réponse à Mouse()
lors de la création de l'objet:
# Obtenir deux pressions gauche ou droite avec un délai de 5000 ms
ma_souris = Mouse(buttonlist=[1,3], timeout=5000)
bouton1, temps1 = ma_souris.get_click()
bouton2, temps2 = ma_souris.get_click()
flush(self)
Efface toutes les entrées en attente, sans se limiter à la souris.
Retourne
- True si un bouton a été cliqué (c'est-à-dire s'il y avait quelque chose à vider) et False sinon.
Exemple
ma_souris = Mouse()
ma_souris.flush()
bouton, position, horodatage = ma_souris.get_click()
get_click(*arglist, **kwdict)
Collecte un clic de souris.
Paramètres
- **resp_args : facultatif mot-clé de réponse qui sera utilisé
pour cet appel à
Mouse.get_click()
. Cela n'affecte pas les opérations ultérieures.
Retourne
- Un tuple (bouton, position, horodatage). Le bouton et la position sont
None
si un délai se produit. La position est un tuple (x, y) en coordonnées d'écran.
Exemple
ma_souris = Mouse()
bouton, (x, y), horodatage = ma_souris.get_click(timeout=5000)
if bouton is None:
print("Un délai d'attente s'est produit!")
get_click_release(*arglist, **kwdict)
Nouveau dans v3.2.0
Collecte la libération d'un clic de souris.
Important: ce fonction n'est actuellement pas implémentée pour le backend psycho.
Paramètres
- **resp_args: Facultatif mots-clés de réponse qui seront utilisés
pour cet appel à
Mouse.get_click_release()
. Cela n'affecte pas les opérations ultérieures.
Renvoie
- Un tuple (bouton, position, horodatage). Le bouton et la position sont
None
en cas de dépassement du temps imparti. La position est un tuple (x, y) en coordonnées de l'écran.
Exemple
my_mouse = Mouse()
button, (x, y), timestamp = my_mouse.get_click_release(timeout=5000)
if button is None:
print("Un dépassement de temps s'est produit !")
get_pos(self)
Renvoie la position actuelle du curseur.
Renvoie
- Un tuple (position, horodatage).
Exemple
my_mouse = Mouse()
(x, y), timestamp = my_mouse.get_pos()
print("Le curseur était à (%d, %d)" % (x, y))
get_pressed(self)
Renvoie l'état actuel des boutons de la souris. Une valeur True signifie que le bouton est actuellement enfoncé.
Renvoie
- Un tuple (button1, button2, button3) de valeurs booléennes.
Exemple
my_mouse = Mouse()
buttons = my_mouse.get_pressed()
b1, b2, b3 = buttons
print("Boutons de souris enfoncés actuellement : (%d,%d,%d)" % (b1,b2,b3))
set_pos(pos=(0, 0))
Définit la position du curseur de la souris.
Attention : set_pos()
est
peu fiable et échouera silencieusement sur
certains systèmes.
Paramètres
- pos: Un tuple (x,y) pour les nouvelles coordonnées de la souris.
Exemple
my_mouse = Mouse()
my_mouse.set_pos(pos=(0,0))
show_cursor(show=True)
Change immédiatement la visibilité du curseur de la souris.
Note :
Dans la plupart des cas, vous préférerez utiliser le mot-clé visible
,
qui
modifie la visibilité lors de la collecte des réponses,
c'est-à-dire
pendant l'appel à mouse.get_click()
. Appeler
show_cursor()
ne
changera pas implicitement la valeur de visible
,
ce qui peut entraîner
un comportement quelque peu contre-intuitif où le curseur
est caché dès que
get_click()
est appelé.
Paramètres
- show: Indique si le curseur est affiché (True) ou masqué (False).
synonyms(button)
Donne une liste de synonymes pour un bouton de souris. Par exemple, 1 et 'left_button' sont des synonymes.
Paramètres
- button: Une valeur de bouton.
Renvoie
- Une liste de synonymes.