Python / PyQT检查是否启用了Aero

时间:2012-09-23 15:39:38

标签: python winapi pyqt4 aero

正如Qt: Erase background (Windows Aero Glass)所述,我正在使用WA_TranslucentBackground在我的QMainWindow上拥有玻璃背景:在Windows 7(启用Aero)上,它运行良好,但在Linux(KDE4)上,我得到了一个黑色背景,我没有尝试过禁用Aero的PC,或者可能比Vista更旧。

有没有办法检查Aero是否可用并且已启用,因此我只能在启用时设置WA_TranslucentBackground,并在没有Aero的情况下在Linux和Windows上保留标准背景?

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

1 个答案:

答案 0 :(得分: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