0

評価尺度を使用しています。参加者は、「t」キーと「b」キーを使用して、カーソルをスケールに沿って移動します。現在、各試行の長さは 6 秒です。参加者が 6 秒経過する前に 't' または 'b' を押すのをやめた場合、最後にキーを押した時刻をログファイルに記録したいと思います。ただし、どのキーが最後に押されたかを確認する方法がわかりません。リストの最後のキー押下の RT をログに記録することを考えていましたが、コードは更新のたびにキー押下をチェックしています。これは私がこれまでに持っているものです:

trialNum=0
for eachPic in catPictures:
    prevPos = 0
    key=[]
    b_list=[]
    t_list=[]
    timer = core.CountdownTimer(TrialDuration)
    event.clearEvents() # get rid of other, unprocessed events
    while timer.getTime() > 0:
    for key in event.getKeys():
        if key in ['escape']:
            core.quit() # quit if they press escape
        if key in ['b']:
            # add keypress to list for each keypress. then move cursor proportionally to length of this list
            b_list.append(key)
            prevPos+=len(b_list)
        if key in ['t']:
            t_list.append(key)
            prevPos-=len(t_list)
4

2 に答える 2

2
  1. キーのリストを1つだけ持って、タイマーが切れたら、つまりwhileループの後(試行の終了時)に最後の要素をチェックします。
  2. 各ループでまったく新しいタイマーを開始しないでください。リセットするだけです。リソース効率が大幅に向上します。
  3. whileループ内のものをインデントします。
  4. その試行で以前にキーを押した回数の距離だけカーソルを移動する理由がわかりません。キーを押すたびに一定の距離を移動する方が合理的です。なので以下にしました。
  5. ビルトインを使用するという Jeremy Gray の提案を必ず確認してくださいpsychopy.visual.RatingScale(この質問に対する別の回答)。

テストされていないコード:

timer = core.CountdownTimer(TrialDuration)
stepSize = 1
for eachPic in catPictures:
    prevPos = 0  # keeps track of the slider position
    rts=[]  # used to keep track of what the latest reaction time was. Reset in the beginning of every trial.

    timer.reset()
    event.clearEvents() # get rid of other, unprocessed events
    while timer.getTime() > 0:
    for key, rt in event.getKeys(timeStamped=timer):  # time keys to this clock
        rts += [rt]  # add this reaction time to the list
        if key in ['escape']:
            core.quit() # quit if they press escape
        if key in ['b']:
            # add keypress to list for each keypress. then move cursor proportionally to length of this list
            prevPos+=stepSize
        if key in ['t']:
            prevPos-=stepSize

    # Log here instead of print
    print rts[-1]
于 2015-09-08T21:13:41.793 に答える