【问题标题】:Exiting PsychoPy Window退出 PsychoPy 窗口
【发布时间】:2013-11-12 20:44:52
【问题描述】:

我在 coder 视图中单步执行了一些 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


    【解决方案1】:

    没有一种神奇的按键可以始终用于关闭窗口或退出进程。我强烈建议您使用 fullscr=False 开发您的实验,然后在最后阶段更改为 fullscr=True 并用于运行主题。 (此开关位于 Builder > Experiment settings > Screen > Full-screen Window -- 取消选中复选框,或在代码中创建 Window 实例时使用 fullscr=False 参数。)您未处于全屏模式。

    在 Builder 中,'escape' 键通常会像魔术键一样工作,但这只是因为 Builder 生成的某些代码专门监听 'escape' 键,如果它得到一个就会退出。 (编译一个 Builder 脚本并检查代码!)。请注意,有一个实验设置允许您禁用转义,因此即使这样也不能保证有效。

    在 Coder 中,如果你像这样编写一个 2 行程序并运行,它会在结束时自行关闭窗口:

    from psychopy import visual
    w = visual.Window()
    

    core.quit() 放在代码中的某处将与在末尾结束的脚本具有相同的效果(即,窗口将正常关闭)。

    如果你已经创建了一个窗口,你可以在不退出 PsychoPy 的情况下关闭它,但是你必须知道如何引用那个窗口实例并告诉它 close() -- 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
    

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

    【讨论】:

    • 为了完整起见,“实验设置”不应与 PsychoPy 偏好混淆。后者可在 Coder 和 Builder 视图中作为菜单选项使用,但“实验设置”仅在 Builder 中可用,并且只能通过单击带有双头白色箭头的蓝色矩形图标来使用。其对话框中的“基本”选项卡包含一个默认选择的“启用 Escape 键”选项。
    【解决方案2】:

    试一试:

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

    【讨论】:

      【解决方案3】:

      如果您打开了控制台,您可以像这样杀死脚本留下的所有内容:

      from psychopy import core
      core.quit()
      

      或者,只关闭悬挂窗口:

      from psychopy import visual
      visual.Window.close()
      

      【讨论】:

        【解决方案4】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2023-02-09
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多