我在编码器视图中单步执行一些PsychoPy代码,并运行Window函数:
http://www.psychopy.org/api/visual/window.html
这有一个有用的副作用,打开一个灰色的窗口,并没有绑定任何键退出。在这种情况下如何退出?我在运行Snow Leopard的Mac上。
我试图使用Finder(Command + Space)打开一个终端窗口并输入killall psychopy
,但这无效。也许killall PsychoPy2
会更有效,但这是一个非常不幸的方法来杀死一个错误的PsychoPy过程 - 特别是当你无法看到你是否已经打开一个终端窗口,如果你正在打字。是否有一个秘密按键组合,将始终释放PsychoPy在屏幕上的保持?
没有一个魔术按键始终可用于关闭窗口或从进程中逃脱。我强烈建议您使用fullscr = False开发实验,然后在最后阶段和运行主题中更改为fullscr = True。 (此开关位于Builder>实验设置>屏幕>全屏窗口 - 取消选中框,或在代码中创建Window实例时的fullscr = False参数。)如果来回切换和关闭僵尸窗口更容易你不是全屏模式。
在Builder中,'escape'键通常会像魔术键一样工作,但这只是因为Builder生成的某些代码专门侦听'escape'键,如果它得到一个键就会挽救。 (编译Builder脚本并查看代码!)。请注意,有一个实验设置允许您禁用转义,所以即使这样也不能保证工作。
从编码器开始,如果你制作一个像这样的2行程序并运行,它将在窗口结束时关闭窗口:
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
多个窗口关闭和重新打开并不常见 - 如果您发现自己这样做,可能有更好的方法。但它确实说明了如何关闭窗口。
尝试用:
if 'escape' in event.waitKeys():
core.quit()
如果你打开一个控制台,你可以杀死你的脚本留下的一切,如下所示:
from psychopy import core
core.quit()
或者,只需关闭挂窗:
from psychopy import visual
visual.Window.close()
我经常使用这段代码来获取以非阻塞方式退出实验的密钥:
while True:
keys = event.getKeys()
if keys:
# q quits the experiment
if keys[0] == 'q':
core.quit()