You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

用Python实现按热键单次记录鼠标位置与RGB至文本文件

实现热键记录鼠标位置与RGB颜色值到文本文件

需求说明

运行脚本后切换到其他程序,按下热键“1”即可单次记录当前鼠标的位置坐标和对应像素的RGB颜色值到文本文件,且避免重复写入。

原代码问题分析

  1. 第一段代码仅能记录鼠标坐标,无法获取RGB值;且else里递归调用a()会导致栈溢出,逻辑冗余。
  2. 第二段代码错误使用pyautogui.displayMousePosition()——这个函数是持续实时显示鼠标信息的循环函数,不会返回坐标/RGB值,直接调用会导致程序陷入无限循环,且c.write(b())尝试写入无返回值的函数结果,完全无效;同时未导入sleep模块,递归逻辑也存在栈溢出风险。

正确实现代码

import pyautogui
import keyboard

# 存储已记录的内容,用于去重
recorded_entries = set()
# 以追加模式打开文件,避免每次运行清空原有内容;也可使用'w'清空重写
with open("log.txt", "a", encoding="utf-8") as log_file:
    def record_mouse_info():
        # 获取当前鼠标坐标
        x, y = pyautogui.position()
        # 获取对应坐标的RGB颜色值
        r, g, b = pyautogui.pixel(x, y)
        # 格式化记录内容
        entry = f"鼠标坐标: ({x:4d}, {y:4d}) | RGB颜色: ({r:3d}, {g:3d}, {b:3d})\n"
        
        # 检查是否已记录,避免重复写入
        if entry not in recorded_entries:
            recorded_entries.add(entry)
            # 写入文件并立即刷新
            log_file.write(entry)
            log_file.flush()
            print(f"已记录: {entry.strip()}")

    # 绑定热键:按下"1"触发记录函数
    keyboard.add_hotkey("1", record_mouse_info)
    print("脚本已启动,按下'1'记录鼠标信息,按下'Esc'退出脚本")
    
    # 等待按下Esc键退出,确保文件正常关闭
    keyboard.wait("esc")

代码关键点说明

  • 使用pyautogui.pixel(x, y)直接获取指定坐标的RGB值,替代无法获取返回值的displayMousePosition()。
  • 用keyboard.add_hotkey()绑定热键,无需循环检测按键,逻辑更简洁高效,避免阻塞。
  • 通过set集合存储已记录的内容,写入前检查是否存在,彻底避免重复记录。
  • 使用with语句管理文件,即使中途按Ctrl+C或Esc退出,文件也会自动关闭,确保内容不会丢失。

内容的提问来源于stack exchange,提问作者Basem Ayad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:20:29