I’m not entirely sure what you’re trying to achieve, but it does seem like you’ll be needing to woodshed some Python.
Your list named “stimuli” is not actually a list of stimuli, it’s a list of strings. The TextStim objects you create in the loop are what is actually shown on the screen, and is what has a “pos” attribute, etc. So your lines:
stimulus = stimuli[0]
stimulus.pos = (2, 0)
… won’t do anything you’re hoping for.
Make sure you understand what’s happening in the for loop. Each time you go through, you’re creating a variable called message and creating a TextStim. Note that each time you do this, you overwrite the first one (you reset the value of “message” to the newly created TextStim), so after the for loop, “message” holds the last TextStim you created, and you have lost any reference to the all the ones you created before it.
Also note that you have given each TextStim the same position (10, 4), so they will overlap.
“ProbeCity1” on the last line will generate an error, because there is no variable named “ProbeCity1”.
Lastly, realize that no changes in position will actually be shown to the user until you call draw() and then flip() on the window. But the thing is, if you care about measuring reaction times from visual stimuli, there are a lot of things one needs to know how to do to not mess it up. In short, I know this wasn’t part of your question, but I recommend you consider using the Builder interface, because it should guarantee non-slip timing, you can always add code with code components, and you can study the code it generates to understand what’s happening.
But if you were to keep coding and wanted to make this work, here’s an approach using a loop. I’m assuming you want your stimuli to appear at 8 second intervals?
stimText = ["ProbeCity1", "ham", "more spam", "even more spam"]
positions = [
(-10, 10),
(10, 10),
(-10,-10),
(10, -10)
]
stimuli = []
for i in range(len(stimText)):
stim = visual.TextStim(mywin, text=str(i)+": "+ stimText[i])
stim.pos = positions[i]
# this way we can access these stimuli later
stimuli.append(stim)
stim.draw()
mywin.flip()
core.wait(8.0)
Edit
Apparently @Michael and I were replying at the same time, oops! I agree with everything he said, of course!