Duplicate a psychopy.visual.Window for monitoring purposes

Hello,

I have a bit of an odd question. Does PsychoPy offers a way to take an existing visual.Window, either in full-screen or window mode; and to duplicate it in a smaller monitoring version in window mode. The goal would be to combine this monitoring window with eye-tracking data, so:

  • on one screen, the participant sees the paradigm
  • on a second screen, the experimenter sees the paradigm with eye-gaze position superimposed

This is feasible by creating 2 visual.Window object and updating the same stimuli on both windows before flipping, but in terms of code it’s a bit heavy, duplicating every stimulus function call:

window_subject = Window(...)
window_monitor = Window(...)

for trial in trials:
    # do something
    stimuli = ShapeStim(window_subject, ...)
    stimuli_monitor = ShapeStim(window_monitor, ...)
    stimuli.draw()
    stimuli_monitor.draw()
    # add eye-tracking
    eye-tracking-gaze = ...Stim(window_monitor, ...)
    eye-tracking-gaze.draw()

It would be very handy to have some objects which takes a Window and duplicates everything that happens to it. If it does exist, I missed it and would appreciate a link to the code or documentation associated. If it doesn’t, then I kind of don’t see how to create this object from the public API since each ...Stim class requires one Window as first argument. Any idea? Maybe something through psychopy.visual.BufferImageStim?

Thanks for the guidance and suggestion,
Mathieu