Python/PyQT 检查是否启用了 Aero



正如这里所说的Qt:擦除背景(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之前的版本中不存在。

您可以尝试如下操作。 它应该处理在非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 .

相关内容

  • 没有找到相关文章

最新更新