python-3.x - 将 QGraphicBlurEffect 设置为 QStackWidget 而不影响其中的小部件
问题描述
我正在尝试将模糊设置为 QStackWidget 的背景。主窗口设置为透明,堆栈小部件使用样式表设置为半透明。当我尝试模糊堆栈小部件时,它会模糊其中的所有内容。如何仅模糊堆栈小部件背景而不模糊其中的小部件?
import sys
from PySide2.QtWidgets import *
from PySide2.QtCore import *
li = ["item1", "item2"]
class MainWindow(QWidget):
def __init__(self):
super(MainWindow, self).__init__()
self.setAttribute(Qt.WA_TranslucentBackground)
self.resize(500, 400)
self.label = QLabel("Noting to see here")
self.tab1 = QLabel("You can't see me")
self.tab1.setAlignment(Qt.AlignCenter)
self.tab2 = QLabel("Now you can")
self.tab2.setAlignment(Qt.AlignCenter)
self.tab3 = QLabel("Now you don't")
self.tab3.setAlignment(Qt.AlignCenter)
self.tabWidget = QTabWidget()
self.tabWidget.addTab(self.tab1, "t1")
self.tabWidget.addTab(self.tab2, "t2")
self.tabWidget.addTab(self.tab3, "t2")
self.tabWidget.setTabPosition(QTabWidget.West)
self.Blur = QGraphicsBlurEffect()
self.tabWidget.tabBar().setGraphicsEffect(self.Blur)
self.tabWidget.setStyleSheet("QTabWidget{background: none;"
"border: 0px;"
"margin: 0px;"
"padding: 0px;}"
"QTabBar:tab{background: rgba(0, 200, 220, 20);}"
"QTabBar:tab:hover{background: rgba(200, 200, 200, 120);}"
"QTabBar:tab:selected{background: rgb(0, 150, 220);}")
self.sw = QStackedWidget()
self.sw.addWidget(self.label)
self.sw.addWidget(self.tabWidget)
self.sw.setStyleSheet("background: rgba(255, 255, 255, 10);")
if li is None:
self.sw.setCurrentWidget(self.label)
else:
self.sw.setCurrentWidget(self.tabWidget)
self.toolBar = QToolBar()
self.toolBar.setFixedHeight(30)
self.toolBar.setStyleSheet("background: grey;")
self.layout = QVBoxLayout()
self.layout.setSpacing(0)
self.layout.setMargin(0)
self.layout.addWidget(self.toolBar)
self.layout.addWidget(self.sw)
self.setLayout(self.layout)
if __name__ == '__main__':
app = QApplication(sys.argv)
mw = MainWindow()
mw.show()
sys.exit(app.exec_())
简而言之,我想要图像中的模糊。
解决方案
推荐阅读
- python - 异常后如何继续循环
- python - 生成集合和子集的唯一排列
- c++ - 如何在仅标头库中实现静态类成员?
- python-sphinx - 在文档字符串的某处嵌入植物图(使用 Sphinx 植物扩展)
- python - 如何将 python np.array 转换为 cv2 图像
- c# - C# 删除最后一个动态创建的文本框
- javascript - React js函数没有被调用
- java - 用于任务的 Java For 循环或 While 循环
- php - 使用 array_unshift() 方法从数组中插入多个值
- android - 如果没有互联网并且无法从数据库中检索值,则使用默认值填充 android 中的微调器