【解决问题】pyqt5设置窗体透明,而上面的控件不透明

快来打我* 2023-07-11 12:53 101阅读 0赞

在做软件的时候想把QWidget设置成透明的,我在网上搜了各种答案:

  • 有说设置qss背景属性的:background: transparent; 但是这样就全透明了。如图3
  • 还有qss里设置 background:rgba(0,0,0,0.2)也是一样的,还是会完全透明
  • 网上查的这些代码也没有用:

    setWindowOpacity(0.7);

    1. setAttribute(Qt::WA_TranslucentBackground, true);
    2. setAttribute(Qt::WA_TranslucentBackground);
  • 有说用QGraphicsOpacityEffect设置的:大事难事这样整个widget上的控件也透明了,如图2。

    op = QtWidgets.QGraphicsOpacityEffect()

    1. op.setOpacity(0.5)
    2. 你的控件.setGraphicsEffect(op)
    3. 你的控件.setAutoFillBackground(True)

1 在这里插入图片描述 在这里插入图片描述
图一(原图) 图二 图三


但是我希望工具栏wiget自身透明,而上面的控件保持原状。吐槽:真是奇了怪了,qss内置了那没多css的属性,怎么会没有一个不透明度的属性呢???

于是我想着要不要重叠两个widget,下面一个按照下面的方法半透明,上面的变成全透明然后再放各种控件,理论上应该可行,但是这样太麻烦了我迟迟没动手。

过了一天以后,我灵光一闪!我直接把widget的背景上面放一个半透明的图片不就可以了吗!!我真是个小机灵鬼! 于是我打开ps弄了一张透明度为50%的白色图片保存成png模式,然后qss里面设置一下:

  1. #Tool_Widget{
  2. border-radius: 10px;
  3. border-image: url(img/toolbg.png)
  4. }

搞定!!!!快夸我!!!
在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,101人围观)

还没有评论,来说两句吧...

相关阅读

    相关 实现透明背景

    很多情况下,我们需要控件的背景是透明的,就是要求直接看到控件父窗口的背景颜色、背景位图,比如标签控件、单选Radio控件、复选Check控件,通常都要求在父窗口的背景上进行绘制

    相关 静态背景透明

      静态控件背景透明,能够完美的将字体显示到背景中去。 在实际应用中也是非常常用的。   赶紧拿去学习吧。。。。。。。。 主要代码:   // Tran