Как заставить участника нажать определенную цифровую клавишу в python?

Я хочу сделать так, чтобы я показывал участникам цифры от 1 до 9, и эксперимент продолжался только в том случае, если они нажимали эту конкретную цифру. Пока у меня есть этот код:

from psychopy import visual, event, core

#draw the blank window
win=visual.Window([1024,768], fullscr=False,allowGUI=True, units='pix',\
color= (0,0,0))

#ready stim
ready = visual.TextStim(win, "Ready", color = (1.0, 1.0, 1.0))
ready.draw()
win.flip()
event.waitKeys()

#create text stimulus
tstim = visual.TextStim(win, text = '', pos=(0, 0))


for number in range(0,10):


    # Update text stimulus with the right number
    tstim.setText(number)

    # Draw the text stimulus
    tstim.draw()

    # Show on the next refresh
    win.flip()

    #note to self: figure out how to make it just for the number
    event.waitKeys(number)

    # Wait 1.0s before continuing
    core.wait(1.0)

# Blank the screen by flipping without drawing anything
win.flip()

# Wait for one seconds at the end
core.wait(1.0)

win.close()

Когда я это делаю, код не работает, так как ключи ожидания должны быть строкой, а не целым числом. я пытался сделать

str(number) 

в цикле (до tstim), но это не сработало.

Можете ли вы помочь мне решить эту проблему, чтобы я мог сделать так, чтобы программа переходила к следующему номеру после того, как участник нажал номер, который в данный момент находится на экране?


person cracker_o    schedule 01.02.2020    source источник
comment
Ответ @Ioanna правильный, но причина того, что ваш подход не работает, заключается в том, что вы не сохранили результат преобразования значения в строку. например вам нужно было бы сделать что-то вроде этого: number = str(number)). Текстовый стимул достаточно умен, чтобы за кулисами приводить числовые значения к строкам, поэтому вы бы не заметили здесь проблемы, но waitKeys() действительно ожидает только строковые значения.   -  person Michael MacAskill    schedule 03.02.2020
comment
Вы можете просто сделать, IIUC, waitKeys(str(number)). Выполнение только str(number) без присваивания избыточно и ничего не делает   -  person Zionsof    schedule 05.02.2020


Ответы (1)


Я преобразовал number в строку в вашем коде здесь:

event.waitKeys(str(number))

и это работало нормально.

person Ioanna    schedule 01.02.2020