0

ここQt: Erase background (Windows Aero Glass)で説明されているように、QMainWindow にガラスの背景を使用WA_TranslucentBackgroundしています: Windows 7 (Aero が有効) ではうまく機能しますが、Linux (KDE4) では背景が黒くなります。 Aeroが無効になっている、またはVistaよりも古いPCで試したことはありません。

Aero が使用可能で有効になっているかどうかを確認する方法はありますか?有効な場合にのみ WA_TranslucentBackground を設定し、Aero を使用しない Linux と Windows で標準の背景を維持できますか?

Windows APIが機能しているようですDwmIsCompositionEnabledが、Vistaより前のバージョンには存在しない可能性があることも考慮して、Pythonから呼び出す方法が見つかりません。

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 に答える