Вам следует избегать core.wait()
, так как вы не можете ничего делать в течение этого интервала (например, постоянно проверять нажатия клавиш, что является (я думаю) тем, что вы хотите. Кроме того, для повышения производительности вы должны создавать свои стимулы только один раз).и затем обновите их свойства по мере необходимости (т. е. для создания текстового стимула с нуля требуется больше времени, чем для изменения содержимого существующего).
Не проверено, но попробуйте что-то вроде этого:
from psychopy import visual, core, event
win = visual.Window([1024, 768], fullscr = False,
allowGUI = True, units = 'pix', color = (-1, -1, -1))
# create just once:
tstim = visual.TextStim(win, text = 'blah', pos=(0,0))
correct_key_pressed = False
for number in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
tstim.text = number
# assuming a screen refresh rate of 60 Hz, draw
# the stimulus 60 times (= 1 second duration):
for frame in range(60):
tstim.draw()
win.flip()
# check for keypresses on every screen refresh:
keys = event.getKeys()
if number in keys:
correct_key_pressed = True
break # exit this drawing loop
if correct_key_pressed:
break # exit the number loop
core.quit()
Это не очень сложно: оно игнорирует проблему времени реакции (например, нам следует игнорировать правильные нажатия клавиш на текущем номере, если они происходят до истечения физиологически обоснованного интервала, и вместо этого учитывать ответына предыдущий номер, правильный в течение этого периода).