Python - 在循环中使用预定义变量列表(psychopy)
Python - Using a list of predefined variables in a loop (psychopy)
我正在尝试编写一段代码,要求一个接一个地查看 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()
,但我不太清楚该怎么做。甚至可以这样做吗?
我猜你应该改变:
x = ['redkey', 'bluekey', ...]
到
x = [redkey, bluekey, ...]
实际上,'x' 中的每个项目都是一个字符串,而不是所需的 class 对象。
为了与 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)
这比在内存中存储许多文本刺激更有效
我正在尝试编写一段代码,要求一个接一个地查看 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()
,但我不太清楚该怎么做。甚至可以这样做吗?
我猜你应该改变:
x = ['redkey', 'bluekey', ...]
到
x = [redkey, bluekey, ...]
实际上,'x' 中的每个项目都是一个字符串,而不是所需的 class 对象。
为了与 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)
这比在内存中存储许多文本刺激更有效