2016-09-30 9 views
0

Я довольно новичок в кодировании с помощью python, но мне нужно изучить его как часть моего PhD. Я хочу запрограммировать задачу, в которой на прямой (сверху вниз) есть 4 возможных положения (здесь круги), которые являются целевыми зонами. Позже будет представлен стимул, соответствующий одной из этих целей. Затем субъекту необходимо будет переместить курсор мыши на строку, чтобы выбрать правильный стимул. Я хочу сделать ввод через колесо компьютерной мыши. Поэтому, если я прокручиваю курсор на кнопке, перемещается вдоль линии и может быть помещен в одну из зон, а затем дается вознаграждение.Колесо мыши перемещает курсор

На мой вопрос: Как реализовать ввод колеса мыши, привязать его к курсору и ограничить курсор, чтобы он оставался на линии (отключить все другие движения мыши)?

Заранее спасибо.

ответ

1

В PsychoPy Coder -> Demos -> input -> mouse, вы увидите демо-скрипт о том, как реагировать на различные виды ввода мыши. Также см. documentation. В коде вы бы сделали что-то вроде этого, где points - это список координат на вашей линии.

# Your points 
points = [[0, 0], [1, 0.5], [2, 1], [3, 1.5]] 

# Set up mouse 
from psychopy import visual, event 
win = visual.Window() # A mouse must be in a window 
mouse = event.Mouse() # initialize mouse object 

# Begin listening 
event.clearEvents('mouse') # Do this in the beginning of every trial, to discard "old" mouse events. 
index = 1 # start value 
while not any(mouse.getPressed()): # for this example, keep running until any mouse button is pressed 
    #print mouse.getWheelRel() 
    scroll_change = int(mouse.getWheelRel()[1]) # returns (x,y) but y is what we understand as scroll. 
    if scroll_change != 0: 
     index += scroll_change # increment/decrement index 
     index = min(len(points)-1, max(index, 0)) # Round down/up to 0 or number of points 
     print points[index] # print it to show that it works. You would probably do something else here, once you have the coordinates. 
+0

Здравствуйте, Йонас, благодарю вас за ответ. Это помогло мне понять рабочий механизм функции getWheelRel(). Однако мне приходилось понимать, что я использовал окно типа «pygame», которое, по-видимому, не поддерживает функцию getWheelRel(), поскольку оно продолжает возвращать [0,0]. Я переместил курсор вверх и вниз, нажав левую и правую кнопку мыши с помощью mouse.getPressed. – fishermen1275