建设注册中心网站,tp框架做展示网站,公众号制作教程,网站文章收录查询上篇提到的NoSleepingClock 还是放在这里给有需要的人
暂时不知道是否会被杀毒软件误报…等待你们的测试
README.md的内容如下: No Sleeping Clock
一个防止电脑进入睡眠状态的时钟程序#xff0c;同时提供时间显示、农历日期、天气信息等功能。
地址#xff1a;NoSleepi…上篇提到的NoSleepingClock 还是放在这里给有需要的人
暂时不知道是否会被杀毒软件误报…等待你们的测试
README.md的内容如下: No Sleeping Clock
一个防止电脑进入睡眠状态的时钟程序同时提供时间显示、农历日期、天气信息等功能。
地址NoSleepingClock
功能特性
核心功能
防止系统睡眠: 通过调用Windows API保持系统和显示器处于活跃状态实时时间显示: 显示当前时间、日期、星期和农历日期天气信息: 自动获取基于IP地址的城市天气信息倒计时功能: 可设置自动停止时间1-12小时系统托盘: 最小化到系统托盘支持托盘菜单操作
界面功能
直观的图形用户界面实时状态显示可配置的自动停止选项美观的UI设计和布局
界面图片 启动时可以看时间日期星期和农历基于本机ip地址的天气信息: 运行中, 支持定时不勾选是永久运行勾选时可选运行时间, 倒计时结束自动回到主界面: 有托盘功能 托盘菜单, 状态和主界面同步
技术实现
主要方法
防止睡眠机制
程序使用Windows API SetThreadExecutionState来防止系统进入睡眠状态admin 运行powercfg -requests可以看到 原理和 DontSleep软件的一样
ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED | ES_DISPLAY_REQUIRED
)当功能关闭时重置为默认状态
ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS)多线程架构
程序采用多线程设计以确保UI响应性和功能独立性
主UI线程: 处理GUI更新和用户交互屏幕保持线程 (awake_screen): 定期调用Windows API防止睡眠天气更新线程 (update_weather): 定期获取和更新天气信息倒计时线程 (run_timer): 处理自动停止功能的倒计时系统托盘线程 (run_tray_icon): 管理系统托盘图标和菜单线程间通过threading.Lock进行同步确保数据一致性。
系统托盘集成
使用pystray库实现系统托盘功能
最小化时自动隐藏到托盘托盘菜单支持启动/停止、设置运行时间、恢复窗口和退出双击托盘图标可恢复窗口托盘菜单与主程序状态实时同步提供一致的用户体验。
天气信息获取
通过WeatherAPI服务获取天气数据
使用ipinfo.io获取当前城市信息调用api.weatherapi.com获取天气详情支持图标显示和温度、天气状况展示
状态管理
程序维护多个状态变量确保功能正确运行
awake_screen_enabled: 屏幕保持功能开关状态checkbox_enabled: 自动停止功能开关状态timer_active: 倒计时线程活动状态running: 程序整体运行状态
线程安全
所有线程间共享的数据访问都通过threading.Lock进行保护确保线程安全
with self.lock:enabled self.awake_screen_enabled异常处理
程序包含全面的异常处理机制
API调用失败的备用方案如使用pyautogui移动鼠标网络请求超时处理线程安全的错误日志记录用户友好的错误提示
使用说明
运行程序后点击No Sleeping按钮启动防睡眠功能可选启用自动停止功能设置运行时间1-12小时程序会自动获取并显示天气信息点击窗口关闭按钮或使用托盘菜单退出程序最小化窗口时会自动隐藏到系统托盘
依赖库
tkinter: GUI界面pyautogui: 鼠标控制备用方案lunardate: 农历日期计算requests: 网络请求loguru: 日志记录PIL (Pillow): 图像处理pystray: 系统托盘ctypes: Windows API调用
配置
程序支持以下配置
WeatherAPI密钥用于天气信息获取默认城市当IP定位失败时使用字体和界面样式设置
日志记录
使用loguru库进行日志记录便于调试和问题追踪。
打包和部署
程序支持Nuitka打包为独立可执行文件包含图标资源的正确路径处理。 打包命令如下
python -m nuitka ^ --standalone ^ --onefile ^ --windows-console-modedisable ^ --enable-plugintk-inter ^ --include-packagePIL ^ --include-packagepystray ^ --include-packagepyautogui ^ --include-packagerequests ^ --include-packageloguru ^ --include-packagelunardate ^ --output-dirdist ^ --output-filenameNoSleepingClock ^ --windows-icon-from-icoICON\NoSleepingClock.ico ^ --include-data-file./ICON/NoSleepingClock.icoICON/NoSleepingClock.ico ^ --nofollow-import-toPIL.JpegImagePlugin ^ --jobs8 ^ --prefer-source-code ^ NoSleepingClockV2.py
ON/NoSleepingClock.ico ^ --nofollow-import-toPIL.JpegImagePlugin ^ --jobs8 ^ --prefer-source-code ^ NoSleepingClockV2.py