2016-09-30 15 views
0

私はPythonでコーディングするのはかなり新しいですが、私は博士号の一部としてそれを学ばなければなりません。私は、ターゲットゾーンである4つの可能な位置(ここでは円)が直線(上から下)にあるタスクをプログラムしたいと考えています。後で、これらのターゲットの1つに対応する刺激が提示される。その後、被験者は、正しい刺激を選択するためにライン上でマウスカーソルを動かさなければならない。私はコンピュータのマウスのホイールを介して入力をしたい。だから上にスクロールすると、ボタン上のカーソルが行に沿って移動し、ゾーンの1つに配置され、報酬が与えられます。マウスホイールがカーソルを移動します

私の質問:マウスホイールの入力を実装し、それをカーソルにバインドし、カーソルがライン上に留まるように制限します(他のすべてのマウスの動きを無効にします)。

ありがとうございます。

答えて

1

PsychoPy Coder - > Demos - > input - >マウスでは、さまざまな種類のマウス入力に反応する方法に関するデモスクリプトが表示されます。また、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()関数の動作メカニズムを理解するのに役立ちました。しかし、私は明らかにgetWheelRel()関数をサポートしていない "pygame"型のウィンドウを使用していたことに気がつきました。私はmouse.getPressedで左右のマウスボタンを押してカーソルを上下に動かしました。 – fishermen1275

関連する問題