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

如何在PyQt5中检测Windows系统的深色配色方案?

解决方案

针对Windows系统,兼容PyQt5/PyQt6(适配Qt5版本)的深色主题检测方案,可通过读取Windows注册表的系统主题配置项实现,代码如下:

import sys
import winreg

def should_apply_dark_frame() -> bool:
    # 仅针对Windows系统处理
    if sys.platform != "win32":
        return False
    
    try:
        # 打开Windows主题配置的注册表项
        with winreg.OpenKey(
            winreg.HKEY_CURRENT_USER,
            r"Software\Microsoft\Windows\CurrentVersion\Themes\Personalize"
        ) as key:
            # 读取AppsUseLightTheme值:0=深色,1=浅色
            value, _ = winreg.QueryValueEx(key, "AppsUseLightTheme")
            return value == 0
    except (FileNotFoundError, WindowsError):
        # 注册表项不存在时默认返回浅色主题
        return False

说明

  1. 兼容性:该方案适用于PyQt5全版本及Windows 10/11系统,完美适配Windows 10的初始配色方案检测。
  2. 原理:Windows系统的应用程序主题明暗设置存储在注册表指定路径下,AppsUseLightTheme值为0表示启用深色主题,1表示浅色主题。
  3. 平台限制:代码通过sys.platform判断仅处理Windows系统,符合无需考虑macOS的要求。
  4. 异常处理:针对注册表项不存在或读取失败的情况,默认返回False(即浅色主题),避免程序崩溃。

对比Qt 6.5+的内置方法:Qt 6.5及以上版本提供QStyleHints.colorScheme()API直接检测,但该接口在Qt5中不存在,因此针对Qt5必须使用注册表读取方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 06:07:22