python tkinter 编写心理学试验程序干扰任务之四则运算 psychopy

在训练任务与回忆任务之间,要求被试做4分钟的四则运算,包括20以内的加法、减法和乘法,被试需要输入运算结果。无论被试是否计算正确,皆进入下一题。4分钟的时间到后,结束干扰任务。

考虑到要求被试输入,用psychopy显得繁琐,使用了tkinter来做显示界面。

tkinter是python的自带模块,安装psychopy的计算机可以直接import tkinter来使用它。

python tkinter 编写心理学试验程序干扰任务之四则运算 psychopy_第1张图片

python tkinter 编写心理学试验程序干扰任务之四则运算 psychopy_第2张图片

python tkinter 编写心理学试验程序干扰任务之四则运算 psychopy_第3张图片


# -*- 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

你可能感兴趣的:(python tkinter 编写心理学试验程序干扰任务之四则运算 psychopy)