Funciones del ratón (Mouse)
clase Mouse
La clase Mouse
se utiliza para recopilar la entrada del mouse. Generalmente, se crea un objeto
Mouse
con la función de fábrica Mouse()
, como se describe en la sección Crear un Mouse.
Ejemplo
# Dibujar un 'punto de fijación del cursor del mouse' hasta que se haga clic en un botón
mi_mouse = Mouse()
mi_canvas = Canvas()
while True:
boton, posicion, marca_temporal = mi_mouse.get_click(timeout=20)
if boton is not None:
break
(x,y), tiempo = mi_mouse.get_pos()
mi_canvas.clear()
mi_canvas.fixdot(x, y)
mi_canvas.show()
Cosas que debes saber
Crear un Mouse
Generalmente, se crea un Mouse
con la función de fábrica Mouse()
:
mi_mouse = Mouse()
Opcionalmente, puedes pasar Palabras clave de respuesta a Mouse()
para establecer el comportamiento predeterminado:
mi_mouse = Mouse(timeout=2000)
Coordenadas
- Cuando Coordenadas uniformes está configurado en 'sí', las coordenadas son relativas al centro de la pantalla. Es decir, (0,0) es el centro. Este es el predeterminado a partir de OpenSesame 3.0.0.
- Cuando Coordenadas uniformes está configurado en 'no', las coordenadas son relativas a la parte superior izquierda de la pantalla. Es decir, (0,0) es la parte superior izquierda. Este fue el predeterminado en OpenSesame 2.9.X y versiones anteriores.
Números de botón
Los botones del mouse están numerados de la siguiente manera:
- Botón izquierdo
- Botón central
- Botón derecho
- Desplazar hacia arriba
- Desplazar hacia abajo
Pantallas táctiles
Al trabajar con una pantalla táctil, un toque se registra como el botón 1 (botón izquierdo).
Palabras clave de respuesta
Las funciones que aceptan **resp_args
toman los siguientes argumentos de palabras clave:
timeout
especifica un valor de tiempo de espera en milisegundos, o se establece enNone
para desactivar el tiempo de espera.buttonlist
especifica una lista de botones que se aceptan, o se establece enNone
aceptar todos los botones.visible
indica si el cursor del mouse se vuelve visible cuando se recopila un clic (True
oFalse
). Para cambiar inmediatamente la visibilidad del cursor, useMouse.show_cursor()
.
# Obtener un clic izquierdo o derecho con un tiempo de espera de 3000 ms
mi_mouse = Mouse()
botón, tiempo = mi_mouse.get_click(buttonlist=[1,3], timeout=3000)
Las palabras clave de respuesta solo afectan la operación actual (excepto cuando se pasan a
Mouse()
al crear el objeto). Para cambiar el comportamiento de todas las operaciones posteriores, establezca las propiedades de respuesta directamente:
# Obtener dos clics izquierdos o derechos con un tiempo de espera de 5000 ms
mi_mouse = Mouse()
mi_mouse.buttonlist = [1,3]
mi_mouse.timeout = 5000
boton1, tiempo1 = mi_mouse.get_click()
boton2, tiempo2 = mi_mouse.get_click()
O pase las palabras clave de respuesta a Mouse()
al crear el objeto:
# Obtener dos clics izquierdos o derechos con un tiempo de espera de 5000 ms
mi_mouse = Mouse(buttonlist=[1,3], timeout=5000)
boton1, tiempo1 = mi_mouse.get_click()
boton2, tiempo2 = mi_mouse.get_click()
flush(self)
Limpia toda la entrada pendiente, no limitada al mouse.
Devuelve
- Verdadero si se había hecho clic en un botón (es decir, si había algo que vaciar) y Falso en caso contrario.
Ejemplo
mi_mouse = Mouse()
mi_mouse.flush()
boton, posicion, marca_temporal = mi_mouse.get_click()
get_click(*arglist, **kwdict)
Recopila un clic del mouse.
Parámetros
- **resp_args: Opcional palabras clave de respuesta que se utilizarán
para esta llamada a
Mouse.get_click()
. Esto no afecta las operaciones posteriores.
Devuelve
- Una tupla (botón, posición, marca_temporal). El botón y la posición son
None
si ocurre un tiempo de espera. La posición es una tupla (x, y) en coordenadas de pantalla.
Ejemplo
mi_mouse = Mouse()
boton, (x, y), marca_temporal = mi_mouse.get_click(timeout=5000)
if boton is None:
print('¡Ocurrió un tiempo de espera!')
get_click_release(*arglist, **kwdict)
Nuevo en v3.2.0
Recopila una liberación de clic del mouse.
Importante: Esta función actualmente no está implementada en el backend psycho.
Parámetros
- **resp_args: Opcional palabras clave de respuesta que serán utilizadas
para esta llamada a
Mouse.get_click_release()
. Esto no afecta operaciones posteriores.
Devuelve
- Una tupla (botón, posición, marca de tiempo). El botón y la posición son
None
si ocurre un tiempo de espera. La posición es una tupla (x, y) en coordenadas de pantalla.
Ejemplo
my_mouse = Mouse()
boton, (x, y), marca_de_tiempo = my_mouse.get_click_release(timeout=5000)
if button is None:
print('¡Ocurrió un tiempo de espera!')
get_pos(self)
Devuelve la posición actual del cursor.
Devuelve
- Una tupla (posición, marca de tiempo).
Ejemplo
my_mouse = Mouse()
(x, y), marca_de_tiempo = my_mouse.get_pos()
print('El cursor estaba en (%d, %d)' % (x, y))
get_pressed(self)
Devuelve el estado actual de los botones del ratón. Un valor Verdadero significa que el botón está siendo presionado actualmente.
Devuelve
- Una tupla de valores booleanos (botón1, botón2, botón3).
Ejemplo
my_mouse = Mouse()
botones = my_mouse.get_pressed()
b1, b2, b3 = botones
print('Botones del ratón presionados actualmente: (%d,%d,%d)' % (b1,b2,b3))
set_pos(pos=(0, 0))
Establece la posición del cursor del ratón.
Advertencia: set_pos()
es
poco confiable y fallará silenciosamente en
algunos sistemas.
Parámetros
- pos: Una tupla (x, y) para las nuevas coordenadas del ratón.
Ejemplo
my_mouse = Mouse()
my_mouse.set_pos(pos=(0,0))
show_cursor(show=True)
Cambia inmediatamente la visibilidad del cursor del ratón.
Nota:
En la mayoría de los casos, querrás utilizar la palabra clave visible
,
la cual
cambia la visibilidad durante la recopilación de respuestas,
es decir, mientras
mouse.get_click()
es llamado. Llamar a
show_cursor()
no cambiará
implícitamente el valor de visible
,
lo cual puede llevar a un
comportamiento algo no intuitivo de que el cursor
se oculte tan pronto como
get_click()
es llamado.
Parámetros
- show: Indica si el cursor se muestra (Verdadero) u oculto (Falso).
synonyms(button)
Proporciona una lista de sinónimos para un botón del ratón. Por ejemplo, 1 y 'left_button' son sinónimos.
Parámetros
- button: Un valor de botón.
Devuelve
- Una lista de sinónimos.