正如这里所说的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
.