不靠谱PsychoPy入门教程目录:
操纵鼠标算是比较好玩而且看上去比较高端一点的技术。在我自己的学习和使用PsychoPy的时候并没有涉及到鼠标,最多用myMouse.setVisible(0)把鼠标变得不可见,以避免它在屏幕上产生干扰。但是后来在帮同学、学妹编程的时候时不时用到一下,所以就尽我所了解的给大家说一下event.Mouse()的用法。
呃,有之前的基础之后应该不需要再拆分步骤一点一点的说了吧。我就把代码一股脑贴出来,关键点解释一下好了。(嗯,就是为自己的懒找借口啦,但是也就这样吧。)
#!/usr/bin/env python
# -*- coding: utf-8 -*-
from psychopy import visual, core, event
win = visual.Window(size = [800,600])
#-------------A 卡片选择 -------------------
'''
这里我建了两个矩形框,一个红色一个绿色。
当鼠标进入某个矩形框的时候,它的颜色加深,离开则恢复原状。
两个色块会一直停在屏幕上,直到你点选一个。
在output去打印出我们所选择的颜色。
'''
# 图形顶点坐标。你可以通过顶点个数和位置控制图形的形状。
card_vert = [[0.2,0.3],[-0.2,0.3],[-0.2,-0.3],[0.2,-0.3]]
# 建立两个形状刺激。用法和其他视觉刺激差不多。
card_1 = visual.ShapeStim(win, lineColor = None,
fillColor = 'red', # 填充颜色
opacity = 0.3, # 透明度
vertices = card_vert, # 矩形的顶点
pos = (0.3,0)) # 位置
card_2 = visual.ShapeStim(win, lineColor = None,
fillColor = 'green',
opacity = 0.3,
vertices = card_vert,
pos = (-0.3,0))
# 创建一个鼠标对象
myMouse = event.Mouse()
while not( myMouse.isPressedIn(card_1) or myMouse.isPressedIn(card_2)):
# 当两个色块都没有被点击的时候循环做以下内容
choice = 'NONE'
# 新建变量choice,用来标记鼠标是在红色色块内还是绿色色块内。
if card_1.contains(myMouse): # 当红色矩形包含(contains)鼠标时
card_1.opacity = 0.7 # 不透明度增高。
choice = 'red' # choice赋值为“red”
elif card_2.contains(myMouse): # 同上
card_2.opacity = 0.7
choice = 'green'
else: # 两个矩形都不包含鼠标时
card_1.opacity = 0.3 # 透明度恢复原值。
card_2.opacity = 0.3
card_1.draw() # 呈现这两个色块
card_2.draw()
win.flip() # 刷新屏幕
win.flip()
#这里是在做出选择之后刷新屏幕,不然的话会停留在之前的界面上。
print choice # 打印
到这里先运行一下看。鼠标不在两个矩形区域时(背景、颜色什么都是随便选的,比较丑):
鼠标在红色区域时(鼠标确实在红色矩形内的,只是截图截不到鼠标,所以看不到。):
点选红色矩形之后output区的结果(那个警告什么的我也处理不了,就那样呆着好了。):
用鼠标做点选操作基本上就是这样了。那用这样的方法我们就可以做一个【继续】按钮。代码如下,接着上面的程序放就行。
#--------------------B 继续按钮----------------------------
event.clearEvents() # 清除之前的event事件。
button = visual.Rect(win, width=0.2, height=0.11,
fillColor = 'yellow',
pos = (0.5,-0.4)) # 用visual.Rect建了一个0.2*0.11的矩形。
text = visual.TextStim(win, text = 'Next',
height = 0.1,
color = 'black',
pos = (0.5,-0.4)) # 位置与button相同。
while not myMouse.isPressedIn(button):
# 这里的逻辑跟--A 卡片选择--一样。
if button.contains(myMouse):
button.opacity = 0.4
else:
button.opacity = 0.2
button.draw()
text.draw()
win.flip()
win.close()
core.quit()
运行界面像这样↓。
点击跳转,没别的了。
以上。
PsychoPy的入门教程就这样虎头蛇尾地结束了。耶~~鼓掌!啪啪啪。
有什么疑问或者建议请在评论区留言。不过我猜应该多半没人看,所以我就当练习排版了[二哈]。
网友评论