2012-09-23 2 views
0

Qt: Erase background (Windows Aero Glass)에서 말씀 드렸듯이 나는 WA_TranslucentBackground을 사용하여 QMainWindow에 유리 배경이 있습니다. Windows 7 (Aero enabled)에서는 잘 작동하지만 Linux (KDE4)에서는 검정색 배경, 나는 Aero가 비활성화되어 있거나 Vista보다 오래된 PC에서 시도하지 않았습니다.Aero가 활성화되어 있는지 Python/PyQT 검사

Aero가 사용 가능하고 활성화되어 있는지 확인하는 방법이 있습니까? Aero가 활성화되어있는 경우에만 WA_TranslucentBackground를 설정하고 Aero가없는 Linux 및 Windows에서는 표준 배경을 유지할 수 있습니까?

Windows API의 DwmIsCompositionEnabled이 작업을 수행하지만 파이썬에서 호출하는 방법을 찾을 수 없으며 Vista 이전 버전에는 존재하지 않을 수도 있다는 계정을 가지고 있습니다.

답변

1

다음과 같이 시도 할 수 있습니다. 이 True를 반환, 내 윈도우 7 시스템에서

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 

: 또한 DwmIsCompositionEnabled 기능의 부재를 비 Windows 플랫폼에서 실행되는 처리하고 있습니다.

+0

감사합니다. 이제 XP가 나왔습니다. 그러면 False가 반환됩니다. 나는 나중에 리눅스를 점검 할 것이다. –