退出PsychoPy窗口

问题描述 投票:4回答:4

我在编码器视图中单步执行一些PsychoPy代码,并运行Window函数:

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

这有一个有用的副作用,打开一个灰色的窗口,并没有绑定任何键退出。在这种情况下如何退出?我在运行Snow Leopard的Mac上。

我试图使用Finder(Command + Space)打开一个终端窗口并输入killall psychopy,但这无效。也许killall PsychoPy2会更有效,但这是一个非常不幸的方法来杀死一个错误的PsychoPy过程 - 特别是当你无法看到你是否已经打开一个终端窗口,如果你正在打字。是否有一个秘密按键组合,将始终释放PsychoPy在屏幕上的保持?

python macos psychopy
4个回答
1
投票

没有一个魔术按键始终可用于关闭窗口或从进程中逃脱。我强烈建议您使用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

多个窗口关闭和重新打开并不常见 - 如果您发现自己这样做,可能有更好的方法。但它确实说明了如何关闭窗口。


1
投票

尝试用:

if 'escape' in event.waitKeys():
    core.quit()

1
投票

如果你打开一个控制台,你可以杀死你的脚本留下的一切,如下所示:

from psychopy import core
core.quit()

或者,只需关闭挂窗:

from psychopy import visual
visual.Window.close()

0
投票

我经常使用这段代码来获取以非阻塞方式退出实验的密钥:

while True:
        keys = event.getKeys()
        if keys:
            # q quits the experiment
            if keys[0] == 'q':
                core.quit()
© www.soinside.com 2019 - 2024. All rights reserved.