psychopy中的code组件(图片+文本)

关于想要用code组件实现
按q键,随机出现a图片(代表收获0元)或者b图片(代表收获20元)
按p键,出现c图片(代表获得10元)
在出现图片的同时出现文字:你本轮获得××元,总共获得了××元(ta在n个试次中获得钱的总数)

img

img

不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 以下回答来自chatgpt: 解决方案: 首先,需要在psychopy中创建一个新的窗口,并加载需要用到的图片,具体代码如下: ```python from psychopy import visual, event win = visual.Window(size=(800, 600), units='pix', fullscr=False) imgA = visual.ImageStim(win, image='path_to_image_a') imgB = visual.ImageStim(win, image='path_to_image_b') imgC = visual.ImageStim(win, image='path_to_image_c') ``` 接下来,需要定义一个函数,用于随机生成图片并计算用户获得的金额,并返回提示文字,具体代码如下: ```python import random def show_image_and_text(): key = event.waitKeys(keyList=['q', 'p'])[0] money = 0 if key == 'q': if random.randint(0, 1) == 0: imgA.draw() else: imgB.draw() money = 20 elif key == 'p': imgC.draw() money = 10 total += money return f'您本轮获得{money}元,总共获得了{total}元' ``` 最后,需要在psychopy中添加code组件,并将该函数作为其可运行的代码,以实现在按下键盘时随机出现图片、计算金额及提示用户,具体步骤如下: 1. 在psychopy Builder中添加一个code组件,设置其属性如下: - 命名:codeshow_image_and_text - 语言:Python - 调用:每帧刷新 - 可编辑:勾选 2. 在code组件中加入以下代码: ```python if codeshow_image_and_text.status == NOT_STARTED: global total total = 0 text = visual.TextStim(win, text='', pos=(0, 0)) codeshow_image_and_text.status = STARTED codeshow_image_and_text.money = 0 if codeshow_image_and_text.status == STARTED: text.text = show_image_and_text() text.draw() if event.getKeys(keyList=['escape']): codeshow_image_and_text.finished = True if codeshow_image_and_text.finished: text.setAutoDraw(False) thisExp.nextEntry() win.close() core.quit() ``` 代码中包括一些初始化操作,以及在每帧更新时调用show_image_and_text函数,并将其返回的文字提示放在psychopy窗口中显示。 优化提示: 为了更好地提示用户,建议在show_image_and_text函数中添加简单的界面交互,比如让用户确认是否收到了钱,或者提供一个按钮用于开始下一轮,以方便用户操作。同时建议将图片、文字等资源统一放在文件夹中,并动态加载,以避免代码变得过于冗杂和难以维护。

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^