mouse.isPressedIn方法无法使用新的触摸屏

时间:2014-11-14 12:25:17

标签: psychopy

使用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()

非常感谢, 大卫

1 个答案:

答案 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循环后。