Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么我的对话框在fullscr=True时不显示?_Python_User Interface_Fullscreen_Psychopy - Fatal编程技术网

Python 为什么我的对话框在fullscr=True时不显示?

Python 为什么我的对话框在fullscr=True时不显示?,python,user-interface,fullscreen,psychopy,Python,User Interface,Fullscreen,Psychopy,我想显示一个对话框,让实验参与者输入一个数字,使用psychopy。当win中的fullscr=False时,将显示对话框。当fullscr=True时,它不会出现,即使键入数字然后返回,程序也会进入下一个循环 你知道为什么吗?下面的相关代码行 from psychopy import visual, event, core, data, gui, logging win = visual.Window([1024,768], fullscr=True, units='pix', autoLog

我想显示一个对话框,让实验参与者输入一个数字,使用psychopy。当win中的
fullscr=False
时,将显示对话框。当
fullscr=True
时,它不会出现,即使键入数字然后返回,程序也会进入下一个循环

你知道为什么吗?下面的相关代码行

from psychopy import visual, event, core, data, gui, logging
win = visual.Window([1024,768], fullscr=True, units='pix', autoLog=True)

respInfo={}
respInfo['duration']=''
respDlg = gui.DlgFromDict(respInfo)

这是因为当
fullscr=True
时,psychopy窗口位于所有其他窗口的顶部,因此在您的示例中,创建了对话框,但用户不可见,因为窗口位于顶部

在开始时显示对话框 如果在实验开始时只需要一个对话框,那么解决方法很简单:在创建窗口之前显示对话框:

#导入内容
从psychopy导入可视化gui
#显示对话框
respInfo={'duration':'''}
respDlg=gui.DlgFromDict(respInfo)
#启动窗口
win=visual.Window(fullscr=True)
中途演示对话框 如果你想在实验中途展示对话,你需要一个相当复杂的技巧。你需要

  • 关闭当前窗口
  • 显示对话框(可选在后台显示一个非全屏窗口以覆盖桌面)
  • 创建一个新窗口(并从步骤2关闭可选窗口
  • 将所有刺激设置为在新窗口中渲染。由于刺激指向第一个窗口对象,因此仅创建具有相同变量名的新窗口(新对象)不会起作用
  • 下面是一些代码,用一个单一的刺激来演示这种方法:

    #导入内容,创建窗口和刺激
    从psychopy导入视觉、事件、gui
    win1=visual.Window(fullscr=True)
    stim=visual.TextStim(win1)#在win1中创建刺激
    #在窗口1中显示刺激
    刺激画
    win1.flip()
    event.waitKeys()
    #当前对话框
    win#u background=visual.Window(fullscr=False,size=[50005000],allowGUI=False)#可选:一个临时大窗口,用于向参与者隐藏桌面/应用程序
    win1.close()#关闭窗口1
    respDict={'duration':''}
    gui.DlgFromDict(respDict)
    win_background.close()#清理临时背景
    #创建一个新窗口并准备刺激
    win2=visual.Window(fullscr=True)
    stim.win=win2#重要提示:将刺激设置为新窗口。
    stim.text='输入的持续时间:'+respDict['duration']#显示输入的内容
    #展示它!
    刺激画
    win2.flip()
    event.waitKeys()
    
    知道这一点很有用,谢谢。但是我已经在屏幕上显示了一条消息,所以窗口已经创建并显示出来了:我需要在每个试用程序的中途使用对话框。那么我是否应该
    fullscr=False
    ,然后显示对话框,然后返回到
    fullscr=True
    ?啊,有趣的问题。我想知道用一个可能的解决方案更新了答案。我相信它没有你希望的那么干净,但至少它是有效的:-)