如何在pyqt中實現win10亞克力效果

2021-10-08 01:13:23 字數 1623 閱讀 8742

windowcompositionattribute.h的列舉類accent_state中新增乙個accent_enable_acrylicblurbehind引數,初值為4;

定義setblur()函式的時候,accent_policy accent =,和上次相比列表的第乙個引數變成了accent_enable_acrylicblurbehind,第三個引數由0變為了gradientcolor,這個引數用來設定視窗的背景色;

在vs2019裡面把寫好的函式編譯為acrylic.dll

在python中通過hwnd=ctypes.wintypes.hwnd(int(self.winid())),把wid型別強制轉換為hwnd型別,接著設定背景色gradientcolor = dword(0x50f2f2f2)0x50f2f2f2的前兩位是透明度,後面六位是bgr,最後ctypes.cdll.loadlibrary('acrylic_dll\\\acrylic.dll').setblur(hwnd,gradientcolor),實現動態鏈結庫的載入和介面函式的呼叫,源**如下:

import sys

from ctypes import cdll

from ctypes.wintypes import hwnd, dword

from pyqt5.qtcore import qt

class

demo

(qwidget)

:""" 亞克力效果的實現 """

def__init__

(self)

:super()

.__init__(

) self.resize(

500,

500)

# 去除邊框,沒有這一步的話視窗陰影也會加上亞克力效果

self.setwindowflags(qt.framelesswindowhint)

# 背景透明

self.setattribute(qt.wa_translucentbackground)

# 呼叫api

hwnd = hwnd(

int(self.winid())

)# 直接hwnd(self.winid())會報錯

gradientcolor = dword(

0x50f2f2f2

)# 設定和亞克力效果相疊加的背景顏色

cdll.loadlibrary(

'acrylic_dll\\acrylic.dll'

).setblur(hwnd, gradientcolor)

if __name__ ==

"__main__"

: demo = demo(

) demo.show())

)

執行效果如下(硝子依舊如此美麗٩(๑>◡

win10怎麼修改碟符 win10如何修改碟符

win10怎麼修改碟符 win10如何修改碟符 用u盤安裝了系統,結果發現裝系統的u盤變成了d盤,安全撥了,碟符還是不會變回原來的。怎麼修改碟符呢?方法 步驟 1桌面右鍵 我的電腦 選擇 管理 2點選下面的 磁碟管理器 3右鍵要修改碟符的驅動器 然後選擇 更改驅動器和路徑 4點選 更改 5點選右邊的...

win10如何回退?win10怎麼退回前一版本

選擇win10開始視窗,然後選擇設定按鍵,如下圖如示,小編在工作列和開始螢幕都放置了設定應用。進入設定後,下拉列表以便選擇最後乙個按鍵 更新與安全 可參考下圖的選單位置。進入更新與安全 子選單,win10的日常補丁更新,也是在這裡設定的,不過我們現在要選擇最左方樹形選單的恢復 選擇恢復後,右方有兩個...

Win10如何關閉Windows Defender

對一些老 弱電腦來講,關閉defender可以減小電腦負擔。1 win r鍵開啟執行視窗,輸入regdit,回車開啟登錄檔編輯器。2 在彈出的登錄檔編輯器中,找到並單擊左側的hkey local machine software policeis microsoft windows defender...