【问题标题】:Python/PyQT check if Aero enabledPython/PyQT 检查 Aero 是否启用
【发布时间】:2012-09-23 15:39:38
【问题描述】:

正如Qt: Erase background (Windows Aero Glass) 所说,我正在使用WA_TranslucentBackground 在我的 QMainWindow 上设置玻璃背景:在 Windows 7(启用 Aero)上它运行良好,但在 Linux(KDE4)上我得到黑色背景,我尚未在禁用 Aero 或比 Vista 旧的 PC 上尝试过。

有没有办法检查 Aero 是否可用和启用,所以我可以设置 WA_TranslucentBackground 仅在它启用的情况下,并在没有 Aero 的情况下在 Linux 和 Windows 上保持标准背景?

Windows API 的 DwmIsCompositionEnabled 似乎可以完成这项工作,但我找不到如何从 Python 调用它,同时考虑到它可能不存在于 Vista 之前的版本中。

【问题讨论】:

    标签: python winapi pyqt4 aero


    【解决方案1】:

    您可以尝试以下方法。它应该处理在非 Windows 平台上运行,以及缺少 DwmIsCompositionEnabled 函数:

    import ctypes
    
    def is_aero_enabled():
        try:
            b = ctypes.c_bool()
            retcode = ctypes.windll.dwmapi.DwmIsCompositionEnabled(ctypes.byref(b))
            return (retcode == 0 and b.value)
        except AttributeError:
            # No windll, no dwmapi or no DwmIsCompositionEnabled function.
            return False
    

    在我的 Windows 7 机器上,这将返回 True

    【讨论】:

    • 谢谢,现在我在 Win XP 上,这返回 False。我稍后会检查 Linux。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-15
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 2013-07-14
    • 2011-10-03
    相关资源
    最近更新 更多