1

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

非常感谢,大卫

4

1 回答 1

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

于 2016-11-04T17:27:08.777 回答