在训练任务与回忆任务之间,要求被试做4分钟的四则运算,包括20以内的加法、减法和乘法,被试需要输入运算结果。无论被试是否计算正确,皆进入下一题。4分钟的时间到后,结束干扰任务。
考虑到要求被试输入,用psychopy显得繁琐,使用了tkinter来做显示界面。
tkinter是python的自带模块,安装psychopy的计算机可以直接import tkinter来使用它。
# -*- coding: utf-8 -*-
"""
Created on Sun Aug 28 13:51:46 2016
@author: zbg
4分钟的四则运算
被试输入运算结果
无论是否正确,则进入下一题
"""
from Tkinter import * #引入模块
import random
from time import time as gettime
#实验阶段
phase = "pre"
timestart = 0
timelimit = 240
s = ''
ans = ''
def generate():
a = random.randint(1, 20)
b = random.randint(1, 20)
op = ['+', '-', '*'][random.randint(0, 2)]
s = `a` + op + `b`
ans = `eval(s)`
if ans < 0:
s = `b` + op + `a`
ans = `eval(s)`
return (s + '=?', ans)
def submit():
global timestart, s, ans, phase, timelimit
#print gettime() - timestart
if u.get() == '':
return
if phase == "pre":
button.config(text = u"提交")
s, ans = generate()
label.config(text = s)
u.set('')
timestart = gettime()
phase = "run"
elif phase =="run":
if gettime() - timestart > timelimit:
top.destroy()
return
s, ans = generate()
label.config(text = s)
u.set('')
top = Tk()
top.update_idletasks()
top.geometry("800x600")
label=Label(top,text= u'请完成接下来出现的计算题', font='Helvetica -46 bold')
label.pack(fill=X, expand=1)
u = StringVar()
u.set(u"input answer here")
ent = Entry(top, textvariable=u, font='Helvetica -46 bold')
ent.pack()
button = Button(top, text=u"开始", command=submit, default='active', font='Helvetica -46 bold')
button.pack(expand=1)
#top.protocol("WM_DELETE_WINDOW", submit)
top.mainloop()
#实验结束阶段
top2 = Tk()
top2.geometry("600x400")
label=Label(top2,text= u'运算部分实验结束了', font=u'微软雅黑 -46 bold')
label.pack(fill=X, expand=1)
top2.mainloop()
psychopy 定做实验程序 https://item.taobao.com/item.htm?spm=a230r.1.14.6.Q6E2OW&id=530690095131&ns=1&abbucket=15#detail
来源:oschina
链接:https://my.oschina.net/u/1387924/blog/742006