Although I wouldn’t think this would cause a 3 second discrepancy, if you want consistent visual timing you need to set your stimuli duration according to number of frames instead of seconds. Read some more about it in the docs here (or in other questions in this forum) :
Suffice to say this isnt normal - psychopy stimulus timing is generally good - so the question is why so bad in your case
How big is the image? Are you loading it from disk on each trial as well? Is the sentence very long? You’re asking everything occur immediately at t=0. I wonder if these things are being delayed in their start times, although I can’t imagine why they would be delayed by such a long period.
The general approach is to try and work out what part of your experiment is causing the problem:
does it go away if you get rid of the image component?
does it go away if you get rid of the text? If so what happens if the text is shorter?
if you add a static period at the beginning of the trial and load the image/text during that does it help?
The image size is small and the sentence is short. I have a big doubt that adding a static period will solve the problem.
To do so, I insert another routine at the beginning of the loop ( before the main of the routine) and in the added routine I insert a blank text component with duration ( lets say 0.25 ) . Am I right?