PsychoPy入門 02 按鍵等待 反應時

2021-07-22 09:48:17 字數 4003 閱讀 7246

這時候就需要增加乙個等待按鍵的語句。

我們沿用上次的**,把文字部分的內容了一下,是這樣的:

#!/usr/bin/env python2

# -*- coding: utf-8 -*-

from psychopy import visual, core

win = visual.window(fullscr = false, size = (1000,600), color = (-1,-1,-1))

text_1 = visual.textstim(win, text = u'示例2',

height = 0.1,

pos = (0.0,0.2),

color = 'pink',

bold = true,

italic = true)

text_2 = visual.textstim(win, text = u'',

height = 0.1,

pos = (0.0,-0.1),

color = 'violet',

bold = true,

italic = false)

text_2.text = u'請按任意鍵開始'

core.quit()

首先,import這裡增加個event。

from psychopy import visual, core, event
然後core.wait(0)時間改為0,下面增加:

k_1 =event.waitkeys()
這裡有兩個函式可以實現案件等待,event.waitkeys()和event.getkeys()。略有不同,waitkeys()可以設定最長等待時間,另外乙個不行。還有執行上的差異,詳情請檢視官網event模組。

event.waitkeys()有三個引數:maxwait=inf,最長等待時間預設無限,可以設定為數字;keylist=none,預設為空,按任何乙個鍵都可以;timestamped=false,時間戳,並不常用。

這時候執行一下,文字的介面就會一直停留,直到你按個鍵才會繼續。

如果我想直到從這個刺激出現開始,到被試做出反應用了多長時間怎麼做呢?下面說一下用core.clock()來記錄反應時的方法。

在文字刺激下方新增時鐘:

timer =core.clock()
在刺激呈現之後重置時鐘,然後在按鍵反應結束後獲取時間。最後把鍵名和時間列印出來。刺激呈現這部分的**就變成這樣。

text_1.draw()

text_2.draw()

win.flip()

core.wait(0)

timer.reset() #重置時間0

k_1 = event.waitkeys()

timeuse = timer.gettime() #獲取時間

print k_1, timeuse

這時候執行一下,隨便按個鍵,會在output區域得到類似這樣的結果:[『f』] 2.80920504301。list裡是按鍵的結果,所用時間按秒計算,精度還是蠻高的。

在下面也增加乙個按鍵等待。

k_2 = event.waitkeys(keylist = ['f','j'])
給keylist乙個列表,這樣就只能按list裡面指定的鍵才會繼續執行下面的**。

現在有兩個選項,那麼就可以根據按鍵的結果設定乙個分支結構。通過對k_2的判斷來設定。

if k_2[0]=='f':

# do someting

else:

# do other

這裡我讓按了『f』鍵之後螢幕上出現乙個「左字」,按『j』鍵後出現「右」字。繼續使用上面的文字刺激。把do something的地方補充完整:

if k_2[0]=='f':

text_1.text = u'左'

text_1.draw()

win.flip()

core.wait(2)

else:

text_1.text = u'右'

text_1.draw()

win.flip()

core.wait(2)

好嘞,執行一下試試瞧。

按鍵等待和反應時的部分就說這些。完整**如下:

#!/usr/bin/env python2

# -*- coding: utf-8 -*-

#示例2

''' 按鍵反應

'''#載入所需要的庫

from psychopy import visual, core, event

#建立視窗

win = visual.window(fullscr = false,

size = (1000,600),

color = (-1.0,-1.0,-1.0))

#文字text_1 = visual.textstim(win, text = u'示例2',

height = 0.12,

pos = (0.0,0.2),

bold = true,

italic = false,

color = 'pink')

text_2 = visual.textstim(win, text = u'',

height = 0.1,

pos = (0.0,-0.2),

bold = true,

italic = false,

color = 'violet')

text_2.text= u'請按任意鍵繼續'

#時鐘timer = core.clock()

#呈現文字刺激

text_1.draw()

text_2.draw()

win.flip()

core.wait(0)

timer.reset() #重置時間0

k_1 = event.waitkeys()

timeuse = timer.gettime() #獲取時間

print k_1, timeuse

#影象pic = visual.imagestim(win, image = 'test_l.jpg')

pic.draw()

win.flip()

core.wait(0)

k_2 = event.waitkeys(keylist = ['f','j'])

if k_2[0]=='f':

text_1.text = u'左'

text_1.draw()

win.flip()

core.wait(2)

else:

text_1.text = u'右'

text_1.draw()

win.flip()

core.wait(2)

'''# 這裡未做講解,是我閒來無聊做了乙個數字的倒計時。

dtimer = core.countdowntimer(4)

while dtimer.gettime()>0:

text_2.text = str(int(dtimer.gettime()))

text_2.draw()

win.flip()

'''win.close()

core.quit()

Android Linux 模擬按鍵 觸控螢幕等事件

在我們應用程式或者在寫android自己主動化測試時候經常會須要模擬實體按鍵,來給我們做測試用。這也是我要整理的目的。基本的涉及的是linux input event事件。下面的樣例基於android 5.1 linux 3.10 1 命令 getevent t 結果 add device 6 de...

隱藏與顯示華為等有虛擬按鍵手機的虛擬按鍵

這裡給個監聽虛擬按鍵狀態的鏈結,請看華為 huawei 虛擬按鍵的判斷和監聽。顯示虛擬按鍵 protected void showbottomuimenu else if build.version.sdk int 19 隱藏虛擬按鍵,並且全屏 protected void hidebottomui...

MongoDB MongoDB基本入門02

mongodb的固定集合 固定集合特性 應用場景 當我們執行下面命令時,發現加入了53條,因為先前新增的會被覆蓋掉 for var i 1 i 100 i mongodb的資料庫安全 安全和認證 第二步 在itcast資料庫中建立普通賬號 第三步 重啟資料庫服務,並開啟安全檢查 第四步 客戶端認證連...