• 博客园logo
  • 会员
  • 周边
  • 众包
  • 新闻
  • 博问
  • 闪存
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
Trancentral
博客园    首页    新随笔    联系   管理    订阅  订阅
大小写监测并显示在托盘 python实现
import ctypes
import pystray
from PIL import Image
import threading


# 获取当前大写锁定状态
def get_caps_lock_state():
return ctypes.windll.user32.GetKeyState(0x14) & 0xFFFF != 0


# 创建图标
def create_icon(color):
width, height = 64, 64
image = Image.new('RGB', (width, height), color)
return image


# 切换图标和通知
def toggle_icon(icon):
if get_caps_lock_state():
icon.icon = create_icon("red")
else:
icon.icon = create_icon("green")


# 切换大小写状态
def toggle_caps_lock(icon, item):
ctypes.windll.user32.keybd_event(0x14, 0x45, 0x1, 0)
ctypes.windll.user32.keybd_event(0x14, 0x45, 0x3, 0)


# 创建菜单
def create_menu():
menu = pystray.Menu(
pystray.MenuItem('切换', toggle_caps_lock),
pystray.MenuItem('退出', lambda: icon.stop()),
)
return menu


# 主函数
def main():
global icon
icon = pystray.Icon("caps_lock_icon", create_icon("red"))
icon.menu = create_menu()
toggle_icon(icon)

# 创建定时器,每秒钟检查一次大写锁定状态
timer = threading.Timer(0.3, caps_lock_timer, args=(icon,))
timer.start()

icon.run(setup)


# 设置函数
def setup(icon):
icon.visible = True
icon.on_click = toggle_caps_lock


# 定时器回调函数,用于定期检查大写锁定状态
def caps_lock_timer(icon):
toggle_icon(icon)
# 继续设置定时器,实现循环检查
timer = threading.Timer(0.3, caps_lock_timer, args=(icon,))
timer.start()


if __name__ == '__main__':
main()
posted on 2023-05-16 14:39  Trancentral  阅读(63)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3