♻️
pythonのGUIライブラリを介さずウィンドウタイトルバーの色を変える方法 in Win11
記事の要約
pythonにおいて、GUIのウィンドウタイトルバーの色を変更したい場合、タイトルバーを一旦非表示にしてそれぞれのボタンを1から実装する手法がよく出てくる。
これはウィンドウの移動などもコーディングしなければならず、色を変えたいだけなのに面倒。
DwmSetWindowAttribute 関数を使えばWindows11なら対処できるよ
あらすじ
- windows11のpythonでタイトルバーの色だけ変えたい
- はじめは
root.overrideredirect(1)
で実装していたが、不安定な挙動が多い - DwmSetWindowAttributeで解決
サンプルコード
if __name__ == "__main__":
app = App()
# ウィンドウのハンドルを取得
hwnd = windll.user32.GetParent(app.winfo_id())
# キャプションの色を指定
DWMWA_CAPTION_COLOR = 35
# 0x00bbggrrの16進数で色を指定
COLOR = 0x00f0f0ff
# ウィンドウに適用
windll.dwmapi.DwmSetWindowAttribute(hwnd, DWMWA_CAPTION_COLOR, byref(c_int(COLOR)), sizeof(c_int))
app.mainloop()
他にも、タイトルバーの文字色・ウィンドウのコーナーの丸み・境界線色 等も変更できます。
詳しくは参考ページを参照してください。
参考ページ
Discussion