0

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

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

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

4

1 回答 1

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.

于 2012-09-23T16:59:37.377 回答