使用PsychoPy的mouse.isPressedIn方法时,我们在使用新的Ilyama ProLite T2452MTS处理鼠标点击响应方面遇到了问题。
总而言之,较旧的触摸屏和鼠标响应工作正常,但新的触摸屏却没有。新的触摸屏在Windows中运行良好,在PsychoPy中使用弹出文本框,所以我认为问题在于某处的mouse.isPressedIn方法。只有在框内拖动手指才会触发响应。
这是我的代码。
win = visual.Window(size=(1920, 1080), fullscr=True, screen=0, allowGUI=False, allowStencil=False,
monitor='testMonitor', color=[1,1,1], colorSpace='rgb',
blendMode='avg', useFBO=True,
)
rectangle = visual.Rect(win=win, name='Bluebox',
width=[0.3, 0.5][0], height=[0.3, 0.5][1],
ori=0, pos=[0.25, 0],
lineWidth=1, lineColor=[0,0,1], lineColorSpace='rgb',
fillColor=[0,0,1], fillColorSpace='rgb')
mouse = event.Mouse(win=win)
rectangle.draw()
win.flip()
test = True
while test:
if mouse.isPressedIn(rectangle) == True:
test = False
else:
rectangle.draw()
win.flip()
非常感谢, 大卫
答案 0 :(得分:0)
我意识到这是两年之后你可能已经解决了它,但对于其他感兴趣的人:
对于触摸屏,我发现使用.contains()
会更好,因为它们在确定点击次数时有点气质。为此,您需要将代码更改为:
test = True
while test:
if rectangle.contains(mouse):
test = False
else:
rectangle.draw()
win.flip()
有时重置光标位置以阻止其在形状中注册可能很有用。要执行此操作,请在脚本顶部添加from win32api import SetCursorPos
。然后,当您想要设置光标位置时,只需使用SetCursorPos((0,0))
,其中两个值是x和y坐标(以像素为单位)。经常这样做可能是个好习惯,例如:退出任何while
循环后。