Выход из окна PsychoPy

Я выполнял некоторый код PsychoPy в представлении кодера и запускал функцию Window:

http://www.psychopy.org/api/visual/window.html

Это имело полезный побочный эффект открытия серого окна и не связывало никакие клавиши для выхода. Как выйти из этой ситуации? Я на Mac под управлением Snow Leopard.

Я попытался использовать Finder (Command + Space), чтобы открыть окно терминала и ввести killall psychopy, но это не помогло. Возможно, killall PsychoPy2 был бы более эффективным, но это довольно неудачный способ убить ошибочный процесс PsychoPy, особенно когда вы не видите, открыли ли вы окно терминала и печатаете ли вы. Есть ли секретная комбинация клавиш, которая всегда освобождает PsychoPy от экрана?


person alexplanation    schedule 12.11.2013    source источник


Ответы (4)


Не существует волшебного нажатия клавиши, которое всегда будет работать для закрытия окна или выхода из процесса. Я настоятельно рекомендую разработать эксперимент с fullscr=False, а затем изменить его на fullscr=True на последних этапах и для запуска испытуемых. (Этот переключатель находится в Builder> Настройки эксперимента> Экран> Полноэкранное окно — снимите флажок или параметр fullscr = False при создании экземпляра окна в коде.) Гораздо проще переключаться вперед и назад и закрывать окна зомби, если вы не в полноэкранном режиме.

В Builder клавиша «escape» часто будет работать как волшебная клавиша, но только потому, что некоторый код, сгенерированный Builder, специально прослушивает клавишу «escape» и отключится, если она ее получит. (Скомпилируйте скрипт Builder и проверьте код!). Обратите внимание, что существует параметр «Эксперимент», который позволяет отключить побег, поэтому даже это не гарантирует работу.

Из Coder, если вы сделаете подобную двухстрочную программу и запустите ее, она закроет само окно, когда завершится:

from psychopy import visual
w = visual.Window()

Помещение core.quit() где-нибудь в коде будет иметь тот же эффект, что и сценарий, заканчивающийся в конце (т. Е. Окно закроется нормально).

Если у вас уже создано окно, вы можете закрыть его, не выходя из PsychoPy, но вы должны знать, как обратиться к этому экземпляру окна и сказать ему закрыть () -- w1 в примере ниже:

from psychopy import visual
w1 = visual.Window()
w1.close()
# do other things here, perhaps a GUI
w2 = visual.Window()  # another, new window pops open

Закрытие и повторное открытие нескольких окон не является обычным явлением — если вы обнаружите, что делаете это, возможно, есть лучший способ. Но это иллюстрирует, как закрыть окно.

person jrgray    schedule 11.05.2014
comment
Для полноты «Настройки эксперимента» не следует путать с настройками PsychoPy. Последний вариант доступен в виде пункта меню как в представлениях Coder, так и в Builder, но «Настройки эксперимента» доступны только в Builder и только при нажатии синего прямоугольного значка с двойной белой стрелкой. Вкладка «Основные» в его диалоговом окне включает параметр «Включить клавишу Escape», который выбран по умолчанию. - person jacanterbury; 28.11.2014

попробуйте с:

if 'escape' in event.waitKeys():
    core.quit()
person OrangeCube    schedule 20.03.2014

Если у вас открыта консоль, вы можете убить все, что осталось от вашего скрипта, следующим образом:

from psychopy import core
core.quit()

В качестве альтернативы, чтобы просто закрыть висящее окно:

from psychopy import visual
visual.Window.close()
person Jonas Lindeløv    schedule 02.05.2014

Я часто использую этот фрагмент кода, чтобы получить ключ для выхода из эксперимента неблокирующим способом:

while True:
        keys = event.getKeys()
        if keys:
            # q quits the experiment
            if keys[0] == 'q':
                core.quit()
person yemu    schedule 16.09.2015