正如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之前的版本中。
答案 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
。