1

我正在尝试编写一段代码,该代码需要一个接一个地查看 200 个文本刺激 1 秒钟,但我无法让我的代码工作。

每个刺激都被预定义为一个变量:

redkey = visual.textStim(win, "key", (1.0, -1.0, -1.0)
bluekey = visual.textStim(win, "key", (-1.0, -1.0, 1.0)

我有一个 200 项长的列表,如下所示:

x = ['redkey', 'bluekey', 'bluekey', 'redkey'...]

我正在尝试编写一个for循环,该循环遍历列表并显示每个变量一秒钟(大致),但我无法让它工作。

win = visual.Window([1024, 768], fullscr = false, allowGUI=false, color = (0.0, 0.0, 0.0))

for item in x:
    item.draw()
    win.flip()
    core.wait(1.0)

当我这样做时,我得到错误:AttributeError: 'str' object has no attribute 'draw'

我试着玩弄vars()eval()但我不知道该怎么做。甚至有可能做到这一点吗?

4

2 回答 2

2

我猜你应该改变:

x = ['redkey', 'bluekey', ...]

x = [redkey, bluekey, ...]

实际上,“x”中的每个项目都是一个字符串,而不是所需的类对象。

于 2016-03-07T20:30:45.690 回答
1

更符合 PsychoPy,您可以创建一次刺激并为每次绘制更改其颜色

colours = ['red', 'green', 'blue']*200
stim = visual.TextStim(win, text="key")
for entry in colours:
    stim.color = entry
    stim.draw()
    win.flip()
    core.wait(1.0)

这比在内存中存储许多文本刺激更有效

于 2016-03-08T10:23:35.537 回答