您的位置:首页 > 编程语言 > Python开发

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

2016-09-03 00:00 447 查看
在训练任务与回忆任务之间,要求被试做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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  psychopy python tkinter