如何使QTabWidget看起来透明?

2024-05-29 06:16:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我想用python制作一个简单的GUI桌面应用程序。在

我制作了一个带有背景图像的简单窗口,并在右角添加了一个选项卡小部件。它工作正常。但是选项卡栏和选项卡内容区域是白色的。在

我想要的是选项卡小部件的背景显示它的父窗口的背景图像(这意味着它是透明的)。但我不知道怎么做。在

以下是我的工作环境、代码和屏幕截图:

工作环境

  • Windows 7系统
  • Python 3.4
  • PyQt5 5.5

源代码

# coding: utf-8

# There are some unnecessary module. 

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QLabel, QHBoxLayout, QVBoxLayout, QGridLayout
from PyQt5.QtGui import QPixmap, QPalette, QBrush, QColor
from PyQt5.QtCore import Qt

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):

        tab1 = QWidget()
        tab2 = QWidget()

        vbox1 = self.makeTab1()
        vbox2 = self.makeTab2()

        tab1.setLayout(vbox1)
        tab2.setLayout(vbox2)

        tabs = QTabWidget()
        tabs.addTab(tab1, "firstTab")
        tabs.addTab(tab2, "secondTab")

        picLabel = QLabel(self)
        picFile = 'background_img.jpg'
        pixmap = QPixmap(picFile)
        palette = QPalette()
        palette.setBrush(QPalette.Background, QBrush(pixmap))

        hboxEX = QHBoxLayout()
        hboxEX.addStretch(2)
        hboxEX.addWidget(tabs)
        hboxEX.setStretchFactor(tabs, 1)

        vboxEX = QVBoxLayout()
        vboxEX.addStretch(1)
        vboxEX.addLayout(hboxEX)
        vboxEX.setStretchFactor(hboxEX, 1)

        self.setLayout(vboxEX)

        self.setPalette(palette)
        self.resize(pixmap.width(), pixmap.height())
        self.show()

    def makeTab1(self):
        lbl1 = QLabel(self)
        lbl2 = QLabel(self)
        lbl3 = QLabel(self)

        lbl1.setText("<a href=\"http://www.google.com\">Google</a>")
        lbl2.setText("<a href=\"https://www.wikipedia.org/\">WikiPedia</a>")
        lbl3.setText("<a href=\"http://www.stackoverflow.com\">StackOverflow</a>")

        lbl1.setOpenExternalLinks(True)
        lbl2.setOpenExternalLinks(True)
        lbl3.setOpenExternalLinks(True)

        vbox1 = QVBoxLayout()
        vbox1.addWidget(lbl1)
        vbox1.addWidget(lbl2)
        vbox1.addWidget(lbl3)

        return vbox1

    def makeTab2(self):
        lbl4 = QLabel(self)
        lbl5 = QLabel(self)
        lbl6 = QLabel(self)

        lbl4.setText("<a href=\"https://www.python.org/\">Python</a>")
        lbl5.setText("<a href=\"https://www.centos.org/\">CentOS</a>")
        lbl6.setText("<a href=\"https://mariadb.org/\">MariaDB</a>")

        lbl4.setOpenExternalLinks(True)
        lbl5.setOpenExternalLinks(True)
        lbl6.setOpenExternalLinks(True)

        vbox2 = QVBoxLayout()
        vbox2.addWidget(lbl4)
        vbox2.addWidget(lbl5)
        vbox2.addWidget(lbl6)

        return vbox2

if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

屏幕截图

screenshot

我尝试了:

我添加了这些代码,它改变了标签的颜色。但它并没有使选项卡区域看起来透明:

^{pr2}$

Tags: selftruewwwpyqt5选项卡hrefsettexttabs
1条回答
网友
1楼 · 发布于 2024-05-29 06:16:02

我想是窗户的问题。您可能需要尝试将应用程序切换到其他样式。在

{见参考文献第1页}

一些示例代码:

def changeStyle(self, styleName):
    QtGui.QApplication.setStyle(QtGui.QStyleFactory.create(styleName))
    self.changePalette()

称之为:

^{pr2}$

相关问题 更多 >

    热门问题