大学的python问题,用python解决

改进视觉搜索任务
1.任务开始时,在屏幕正中呈现“+”,维持1
秒,随后呈现任务刺激,刺激内容和位置随机
2.用户移动鼠标,当鼠标移到目标刺激时,程序
记录下用户反应时间,任务刺激消失,屏幕正中呈现”+”
3.重复1-2,20次提示
root.after(time,function):程序在time指定时间段后运行function函数。能今晚搞定追加20


import tkinter
import random

root = tkinter.Tk()

# 在屏幕中间显示“+”
lbl = tkinter.Label(root, text="+")
lbl.pack()

# 在1秒后显示任务刺激
def show_stimulus():
    # 随机生成刺激内容和位置
    stimulus = random.choice(["A", "B", "C"])
    x = random.randint(0, root.winfo_width())
    y = random.randint(0, root.winfo_height())
    # 在随机位置显示刺激
    lbl.config(text=stimulus, x=x, y=y)
    # 记录用户反应时间
    start = time.time()
    # 当鼠标移到目标刺激时,计算用户反应时间
    def on_click(event):
        end = time.time()
        reaction_time = end - start
        print(reaction_time)
        # 显示“+”
        lbl.config(text="+")
    # 绑定鼠标点击事件
    root.bind("<Button-1>", on_click)

root.after(1000, show_stimulus)

# 重复20次
for i in range(20):
    root.after(1000, show_stimulus)

root.mainloop()

Python计算机视觉第七章 图像搜索
https://blog.csdn.net/m0_50882524/article/details/126851742

望采纳,下面是对应的代码

# 导入必要的模块
import tkinter as tk
import random

# 设置窗口大小
window_width = 500
window_height = 500

# 设置“+”号初始位置
plus_x = window_width / 2
plus_y = window_height / 2

# 设置目标刺激初始位置
target_x = random.randint(0, window_width)
target_y = random.randint(0, window_height)

# 设置试次数
num_trials = 20

# 设置每次试次持续时间(秒)
trial_duration = 1

# 创建主窗口
root = tk.Tk()
root.title("改进的视觉搜索任务")

# 创建一个画布
canvas = tk.Canvas(root, width=window_width, height=window_height)
canvas.pack()

# 函数:在屏幕中央绘制“+”号
def draw_plus():
    global plus_x, plus_y
    canvas.create_text(plus_x, plus_y, text="+", font=("Arial", 32))

# 函数:在屏幕上随机位置绘制目标刺激
def draw_target():
    global target_x, target_y
    canvas.create_rectangle(target_x, target_y, target_x + 20, target_y + 20, fill="red")

# 函数:开始下一次试次
def next_trial():
    global trial_num, reaction_times
    
    # 清屏
    canvas.delete("all")
    
    # 如果已完成所有试次,结束任务
    if trial_num == num_trials:
        root.after_cancel(trial_timer)
        root.destroy()
        return
    
    # 绘制“+”号,持续1秒
    draw_plus()
    root.after(1000, draw_target)
    
    # 开始当前试次的计时器
    trial_start_time = time.time()

    # 函数:记录点击目标刺激时的反应时间
    def on_click(event):
        nonlocal trial_start_time
        reaction_times.append(time.time() - trial_start_time)
        canvas.delete("all")
        draw_plus()
        trial_timer = root.after(1000, next_trial)

    # 将 on_click 函数与鼠标左键点击事件绑定
    canvas.bind("<Button-1>", on_click)

    # 开始第一次试次
    trial_num = 1
    reaction_times = []
    draw_plus()
    trial_timer = root.after(1000, next_trial)

    # 开始主循环
    root.mainloop()

直接下载Anaconda,傻瓜式安装后直接打开Spyder,把之前回答的代码直接复制粘贴到这个编辑器里,按F5运行就好了。