If this template helps then use it. If not then just delete and start from scratch.
OS (e.g. Win10): MacOS Catalina 10.15.4 PsychoPy version v2020.1.2 Standard Standalone? (y/n) y What are you trying to achieve?: I’m trying to add a block of text where the text changes depending on a condition. I’m building a Corsi block task, and want the text to display ‘Pay attention’ while a sequence of squares is flashing, and ‘Click the squares in order now’ is the sequence of flashing squares has completed.
What did you try to make it work?:
I’ve entered a text component
$feedback9
And a code component with:
Begin routine:
feedback9 = 'Pay attention'
Each frame:
if blkIndex_3 < actualSequenceLength :
feedback9 = 'Pay attention'
else:
feedback9 = 'Click the squares in order now'
When the text component is set to constant, I get an error that it isn’t defined. When I set the text component to set every repeat, the text displays, but it doesn’t update. I don’t want to use set every frame, because I want to be able to have this work on Pavlovia.
You don’t have any choice about where the code goes: if you want it to update at some point during the trial, the code needs to be in the “each frame” tab, otherwise it applies to the entire duration of the trial.
Update it using feedback9.text=‘Pay attention’ etc. if your text component is called feedback9
However, your each frame code is still updating it every frame. You need to also check its state.
For example:
if blkIndex_3 < actualSequenceLength and feedback9.text != 'Pay attention':
feedback9.text = 'Pay attention'
else if blkIndex_3 >= actualSequenceLength and feedback9.text != 'Click the squares in order now'
feedback9.text = 'Click the squares in order now'
Personally I use a separate variable as a flag for the state of the text component but this should be simpler to understand.