gpt4 book ai didi

python - 使用 ioHub 的 PsychoPy 按键代码

转载 作者:太空宇宙 更新时间:2023-11-03 18:13:16 31 4
gpt4 key购买 nike

我正在尝试编写一个代码,其中用户可以使用向上和向下箭头键调整行的长度。

我可以让用户通过按下它们来调整线条,但这需要很长时间,因为我有它,以便长度增加(如果按下向上键)或减少(如果按下向下键)每按下一个键,就移动 1 个像素。

我想知道是否有人知道如何在按住按键时调整线条的长度,并在松开按键后停止调整该线条?

我一直在尝试不同的 ioHub 功能,但一直无法弄清楚。

我尝试将其基于按键的持续时间,但直到释放按键后才会报告持续时间,因此用户无法在按住时查看他们如何调整线路 key 。

有人有什么建议吗?

最佳答案

此答案假设您正在使用 PsychoPy 的 Builder 界面。但是您也可以将相同的代码片段放在 Coder 界面中的适当位置。

我假设您有一个 Line 组件,并且其大小以标准化单位指定。现在插入一个 Code 组件(创建后,右键单击它并将其移动到 Line 组件上方,以便立即应用对 Line 对象的更改,而不是在下一次屏幕刷新时应用)。

在代码组件的“开始实验”选项卡中,输入以下代码来初始化 ioHub 并为将应用于该行的缩放因子创建一个初始值(默认为零):

from psychopy.iohub import launchHubServer, EventConstants

io=launchHubServer(experiment_code='key_evts', psychopy_monitor_name='default')
keyboard = io.devices.keyboard

increment = [0, 0] # initial value of scaling factor

然后在“每帧”选项卡中,我们将检查按键情况。因此,如果您的屏幕以 60 Hz 运行,这就是线条尺寸更新的速率。

# check the keyboard
for event in keyboard.getEvents():
if event.type == EventConstants.KEYBOARD_PRESS:
# a key has been pressed. This is reported only once, so set the value
# of the scaling factor to be used until the key is released:
if event.key == u'UP':
increment = [0.01, 0] # make it 1% of screen half-width longer
elif event.key == u'DOWN':
increment = [-0.01, 0] # make 1% shorter
if event.type == EventConstants.KEYBOARD_RELEASE:
# the key is no longer being pressed, so stop changing the size:
increment = [0, 0]

# regardless of what key is/isn't pressed, apply the current
# scaling factor on every screen refresh
line.size += increment

希望这对您有用。 (我是使用 ioHub 的新手:这对我有用,但可能不是“正确”的方法)。

关于python - 使用 ioHub 的 PsychoPy 按键代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25495252/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com