前提・実現したいこと
https://kunisatolab.github.io/main/how-to-psychopy.html#%E3%81%AF%E3%81%98%E3%82%81%E3%81%AB
↑
上記サイトを参考にしてストループ課題を作っています。
現在は課題13までを完了し、一応課題自体は完成しています。
ほかのPCでこれを実行すると正常に表示されるが自身のPCだとうまくいきません。
参加者IDを取得するようにすると肝心の課題の表示が暗転してうまく表示できません。
###ここに質問の内容を詳しく
参加者IDを取得するようにすると肝心の課題の表示が暗転してうまく表示できません。
→#参加者IDを取得、のコードについて
dlg = gui.DlgFromDict(expInfo, title='Experiment', fixed=['dateStr'])
の記述を削除して実行するとそのようなエラーが出ないことを確認。
また、画面が暗転するタイミングは教示を出力する際のfor文中、
myWinをflip()で出力をするとき。
しかし上述した通り、
dlg = ~~
の記述がなければこれも正常に表示される。
そこで該当箇所を見ていただき、なぜ画面が暗転してしまうのか、どのようにコードを書けばうまく表示されるのかをご教示いただきたいです。
該当のソースコード
python
1# -*- coding: utf-8 -*- 2 3from psychopy import visual, core, event, gui, data, misc 4import numpy, os , random,time,csv 5 6 7#参加者IDの取得 8try: 9 expInfo = misc.fromFile('lastParams.pickle') 10except: 11 expInfo = {'Participant':'001'} 12 13expInfo['dateStr']= data.getDateStr() 14-------------------------------該当箇所--------------------------- 15dlg = gui.DlgFromDict(expInfo, title='Experiment', fixed=['dateStr']) 16if dlg.OK: 17 misc.toFile('lastParams.pickle', expInfo) 18else: 19 core.quit() 20 21----------------------------------------------------------------- 22 23results = [] 24 25 26 27 28 29colorDic = { 30 u'赤': {'rgb': ( 1, -1,-1), 'type': '1'}, 31 u'黄': {'rgb': ( 1, 1,-1), 'type': '2'}, 32 u'青': {'rgb': (-1, -1, 1), 'type': '3'} 33} 34 35charConditionList = [ 36 {'kanjiChar': u'赤', 'color': u'赤'}, 37 {'kanjiChar': u'黄', 'color': u'赤'}, 38 {'kanjiChar': u'青', 'color': u'赤'}, 39 {'kanjiChar': u'赤', 'color': u'黄'}, 40 {'kanjiChar': u'黄', 'color': u'黄'}, 41 {'kanjiChar': u'青', 'color': u'黄'}, 42 {'kanjiChar': u'赤', 'color': u'青'}, 43 {'kanjiChar': u'黄', 'color': u'青'}, 44 {'kanjiChar': u'青', 'color': u'青'} 45] 46 47text = '今から色のついたもじがでてきます。\n文字の意味ではなく文字の色に基づいて\nボタンをおしてください。\n文字が赤色ならキーボードの1を、\n黄色なら2を、青色なら3をおしてください。\nこの指示が読めたらスペースキーを押してください\n' 48 49myWin = visual.Window(fullscr=True, monitor="Default", allowGUI=False, units="norm", color=(1,1,1)) 50instText = visual.TextStim(myWin,text = text,pos=(0,0),color = (-1,-1,-1),height=0.1) 51 52instText.draw() 53myWin.flip() 54 55keyList = event.waitKeys(keyList=['space']) 56 57#反応時間計測のための設定 58stopwatch = core.Clock() 59 60M=1 61N = len(charConditionList) 62 63for m in range(M): 64 r = list(range(N)) 65 numpy.random.shuffle(r) 66 for i, currentState in enumerate(r): 67 myWin = visual.Window(fullscr=True, monitor="Default", allowGUI=False, units="norm", color=(1,1,1)) 68 charCondition = charConditionList[currentState] 69 colorData = colorDic[charCondition['color']] 70 kanjiCharData = colorDic[charCondition['kanjiChar']] 71 char = charCondition['kanjiChar'] 72 myText = visual.TextStim(myWin,text = char,pos=(0,0),color = colorData['rgb'],height=0.2) 73 myText.draw() 74 myWin.flip() 75 76 #参加者の反応測定開始 77 #前回の刺激提示の影響を消去する 78 event.clearEvents() 79 80 #ストップウォッチをリセット 81 stopwatch.reset() 82 #参加者の反応をリセット 83 Responded = False 84 85 #ストップウォッチをリセットしてからstopwatch.getTime()で測定した時間が一秒を超えるまで以下の処理を実行 86 while stopwatch.getTime() < 1: 87 #もしこれまでに反応がないようなら event.waitKeysで反応を抜き出す 88 #Respondedには反応と反応時間が入る 89 if not Responded: 90 Responded = event.getKeys(keyList=['1','2','3'],timeStamped=stopwatch) 91 92 #もし一秒たっても反応がないならno responseと反応時間なしで処理する 93 if not Responded: 94 Responded = [('no respose', 0)] 95 96 #参加者の測定終了 97 98 99 #正解と不正解のフィードバック 100 if Responded[0][0] == 'no respose': 101 fbText = visual.TextStim(myWin, text = u'無反応',pos=(0,-0.3),color=(-1,-1,-1),height=0.2) 102 rtText = visual.TextStim(myWin, text = str(Responded[0][1])+u'秒',pos=(0,-0.5),color=(-1,-1,-1),height=0.2) 103 #保存用の結果 104 correctIncorrect = None 105 106 elif Responded[0][0] == colorData['type']: 107 fbText = visual.TextStim(myWin, text = u'正解',pos=(0,-0.3),color=(-1,-1,-1),height=0.2) 108 rtText = visual.TextStim(myWin, text = str(Responded[0][1])+u'秒',pos=(0,-0.5),color=(-1,-1,-1),height=0.2) 109 #保存用の結果 110 correctIncorrect = True 111 else: 112 fbText = visual.TextStim(myWin, text = u'不正解',pos=(0,-0.3),color=(-1,-1,-1),height=0.2) 113 rtText = visual.TextStim(myWin, text = str(Responded[0][1])+u'秒',pos=(0,-0.5),color=(-1,-1,-1),height=0.2) 114 #保存用の結果 115 correctIncorrect = False 116 117 #上記で設定したフィードバックと反応時間の書き込み 118 fbText.draw() 119 rtText.draw() 120 121 kanjiCharType = kanjiCharData['type'] 122 colorType = colorData['type'] 123 124 #一試行の結果の保存 125 results.append([ 126 N*m + i, 127 kanjiCharType, 128 colorType, 129 colorType==kanjiCharType, 130 Responded[0][0], 131 correctIncorrect, 132 Responded[0][1] 133 ] 134 ) 135 136 137 138 139 myText = visual.TextStim(myWin,text = u'+',pos=(0,0),color = (-1,-1,-1),height=0.2) 140 myText.draw() 141 myWin.flip() 142 core.wait(1) 143 144#最終的な結果を保存 145curD = os.getcwd() 146datafile=open(os.path.join(curD, 'log', 'Sub{0}_{1}.csv'.format(expInfo['Participant'], expInfo[ 'dateStr'])),'wb') 147 148datafile.write(b'trial, meaning, color, congruent, response, correct, RT\n') 149for r in results: 150 datafile.write('{0}, {1}, {2}, {3}, {4}, {5}, {6}\n'.format(*r).encode()) 151datafile.close() 152 153 154
###エラーメッセージ
7.8584 WARNING Monitor specification not found. Creating a temporary one...
7.8749 WARNING User requested fullscreen with size [800 600], but screen is actually [1920, 1080]. Using actual size
それぞれ、課題の教示がプログラム上のfor文で実行されるたびにこのエラーが排出される。
ただ、ほかのPCではこのエラーが出ても正常に表示されているため本質的な問題ではないように感じられる。
補足情報(FW/ツールのバージョンなど)
pythonは3.Xのバージョンを使用中。
また、使用ライブラリはpsychopy3
OSはWindows 10 Pro
バージョンは20H2
OSビルドは19042.928
回答1件
あなたの回答
tips
プレビュー