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()
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()
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix