PsychoPy повторно открыть окно

Я запрограммировал парадигму точечного зонда, используя Standalone PsychoPy v1.80.03. После точечного зонда мне нужна модифицированная задача, которая выглядит идентично точечному зонду. Поэтому я передаю объект точечного зонда в конструктор второй задачи, чтобы повторно использовать окно и контейнеры стимулов, привязанные к этому окну.

Однако перед запуском второй задачи мне нужно ввести некоторую информацию (например, условие) с помощью gui.DlgFromDict. Когда окно точечного зонда все еще находится в полноэкранном режиме, диалоговое окно недоступно.

Я попытался изменить полноэкранный режим на false с помощью dotProbe.window.fullscr = False, за которым следует dotProbe.window.flip(), но после создания экземпляра окна изменение этого атрибута, похоже, не имеет эффекта.

Закрытие окна с помощью dotProbe.window.close() делает диалог доступным, но нет функции, которая снова открывает окно для продолжения выполнения второй задачи. Конечно, я мог бы просто создать новое окно, но, как я уже сказал, мне нужна идентичная установка со стимулами в точно таких же положениях и со всеми остальными параметрами. Копирование всех параметров из одного скрипта в другой, чтобы «вручную» убедиться, что они выглядят одинаково, нежелательно, как и обходные пути, такие как предоставление ввода для 2-й задачи до точечного зонда, поскольку сценарии должны иметь возможность запускаться независимо (если нет точечного зонда). объект предоставляется в конструкторе, создается новый объект, обеспечивающий внешний вид по умолчанию).

Спасибо за любую помощь!


person Mario Reutter    schedule 08.10.2014    source источник


Ответы (1)


Вы не хотите закрывать окно: это фактически уничтожает весь объект вместе со всеми его стимулами и другими атрибутами.

Решение аналогичной проблемы было размещено здесь: https://groups.google.com/forum/#!msg/psychopy-users/zq2E12vnYiI/6mXirJMlq3cJ

По словам Яна Крамера (и последующее улучшение от jashubbard здесь: https://discourse.psychopy.org/t/bug-user-defined-gui-does-not-display-in-full-screen-on-mac-osx/2214/3), я думаю, вы хотите использовать что-то вроде:

win.winHandle.minimize() # minimise the PsychoPy window
win.winHandle.set_fullscreen(False) # disable fullscreen
win.flip() # redraw the (minimised) window

Это скроет окно, а не закроет его. Затем восстановите его с помощью:

win.winHandle.maximize()
win.winHandle.set_fullscreen(True) 
win.winHandle.activate()
win.flip()
person Michael MacAskill    schedule 08.10.2014
comment
Это работает очень хорошо, спасибо! Объект winHandle не задокументирован в API. Есть ли шанс найти эти драгоценные камни напрямую, не спрашивая кого-то, кто случайно знает? ;) - person Mario Reutter; 13.10.2014
comment
Привет, Марио, документацию всегда можно улучшить: добровольцы приветствуются :-) Но мы также надеемся, что вопросы и ответы здесь, в StackOverflow, предоставят легко удобочитаемые ответы в Google таким образом, который будет менее загадочным для новичков, чем копание в документации API или хотя длинные темы в архиве списка рассылки. Так что спасибо, что пометили свой вопрос как отвеченный и предоставили отзыв: это поможет людям в будущем, у которых будет такой же запрос. - person Michael MacAskill; 15.10.2014
comment
Я понимаю. Спасибо еще раз! Как только моя репутация достигнет 15, я также отмечу ваш ответ как полезный: P - person Mario Reutter; 15.10.2014