<p>可以使用“边界半径”创建变通方法
(UpdateLayeredWindow相当于WA_半透明背景,SetWindowRgn对SetWindowCompositionAttribute模糊没有影响)</p>
<p><a href="https://i.stack.imgur.com/Yx7Nb.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/Yx7Nb.png" alt="blurry"/></a></p>
<p>完整代码:</p>
<pre><code>Stylesheet = """
#Custom_Widget {
border-radius: 20px;
opacity: 100;
border: 8px solid #cdced4;
}
#closeButton {
min-width: 36px;
min-height: 36px;
border-radius: 10px;
}
#closeButton:hover {
color: #FFFFFF;
background: red;
}
"""
import sys
from PySide2.QtWidgets import *
from PySide2.QtCore import *
from BlurWindow.blurWindow import GlobalBlur
class MainWindow(QMainWindow):
def __init__(self):
super(MainWindow, self).__init__()
self.setStyleSheet(Stylesheet)
self.setWindowFlag(Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground, True)
self.resize(488, 388)
GlobalBlur(self.winId(),Acrylic=True,hexColor='#FFFFFF20')
self.Borders() #the real MainWindow
def Borders(self):
window = QMainWindow(self)
window.setAttribute(Qt.WA_TranslucentBackground)
window.setWindowFlag(Qt.FramelessWindowHint)
window.resize(500, 400)
self.widget = QWidget(window)
window.setCentralWidget(self.widget)
self.widget.setObjectName('Custom_Widget')
self.layout = QHBoxLayout(self.widget)
self.layout.addWidget(QPushButton(
'X', self,clicked=exit, objectName='closeButton'))
self.layout.addWidget(QLabel("<h2 style='color:blue;'>Blurry</h2>"))
window.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
</code></pre>
<p>UpdateLayeredWindow alpha示例:<a href="https://github.com/wxWidgets/Phoenix/issues/1544" rel="nofollow noreferrer">https://github.com/wxWidgets/Phoenix/issues/1544</a></p>