正如这里Qt: Erase background (Windows Aero Glass)所说,我正在使用WA_TranslucentBackground在我的QMainWindow上设置玻璃背景:在Windows7(启用了Aero )上运行得很好,但在Linux (KDE4)上我得到了一个黑色背景,我还没有在禁用Aero的PC上尝试过,或者可能比Vista更老。
有没有一种方法可以检查Aero是否可用和启用,这样我就可以只在启用的情况下设置WA_TranslucentBackground,并在没有Aero的情况下保持Linux和Windows上的标准背景?
Windows API的DwmIsCompositionEnabled似乎可以完成这项工作,但我找不到如何在Python中调用它,也考虑到它可能在Vista之前的版本中不存在。
发布于 2012-09-24 00:59:37
您可以尝试下面这样的方法。它应该处理在非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在我的Windows7机器上,它返回True。
https://stackoverflow.com/questions/12553675
复制相似问题