首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何删除Q-Chart背景色并使其透明

如何删除Q-Chart背景色并使其透明
EN

Stack Overflow用户
提问于 2020-05-20 08:29:30
回答 1查看 1.1K关注 0票数 0

如何删除Q-Chart的背景色(白色)并使其透明。??这样我就可以最大化图表的大小,而不会覆盖应用程序中的其他标签。:)

我尝试过以下几种方法:

代码语言:javascript
复制
chart.setBackgroundBrush(QColor(Qt.transparent))
chart.setBackgroundBrush(QColor(255, 255, 255, 0))
chartView.setBackgroundBrush(QColor(Qt.transparent))
chartView.setBackgroundBrush(QColor(255, 255, 255, 0))

请看下面我用过的完整代码示例。有一个标签是我想在图表之外强调的,但图表的背景覆盖了它。

代码语言:javascript
复制
# ==== Below is the functional Code (Start) ==== #

from PyQt5.QtWidgets import QApplication, QMainWindow, QFrame, QLabel
import sys
from PyQt5.QtChart import QChart, QChartView, QPieSeries, QPieSlice
from PyQt5.QtGui import QPainter, QPen, QFont
from PyQt5.QtCore import Qt


class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("PyQtChart Pie Chart")
        self.setGeometry(100,100, 500,500)
        self.show()
        #self.create_piechart()
        self.sample_Frame()

    def sample_Frame(self):
        self.Frame1 = QFrame(self)
        self.Frame1.setFrameShape(QFrame.Box)
        self.Frame1.setFrameShadow(QFrame.Raised)
        self.Frame1.setGeometry(50, 50, 400, 400)
        self.Frame1.setStyleSheet('QFrame {background-color: gray}')

        labelFont = QFont('Calibri', 18)
        labelFont.setBold(True)
        self.Label1 = QLabel(self.Frame1)
        self.Label1.setText('The Quick Brown Fox \nJumps Over the Lazy Dog \nNear the River Bank')
        self.Label1.setFont(labelFont)
        self.Label1.move(10, 10)

        self.create_piechart()
        self.Frame1.show()

    def create_piechart(self):
        series = QPieSeries()
        series.append("Python", 80)
        series.append("C++", 70)
        series.append("Java", 50)
        series.append("C#", 40)
        series.append("PHP", 30)

        #adding slice
        slice = QPieSlice()
        slice = series.slices()[2]
        slice.setExploded(True)
        slice.setLabelVisible(True)
        slice.setPen(QPen(Qt.darkGreen, 2))
        slice.setBrush(Qt.green)

        chart = QChart()
        chart.legend().hide()
        chart.addSeries(series)
        chart.createDefaultAxes()
        chart.setAnimationOptions(QChart.SeriesAnimations)
        chart.legend().setVisible(True)
        chart.legend().setAlignment(Qt.AlignBottom)
        chartview = QChartView(chart)
        chartview.setRenderHint(QPainter.Antialiasing)
        chartview.setParent(self.Frame1)
        chartview.setGeometry(5, 50, 350, 350)
        chartview.show()


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())
EN

回答 1

Stack Overflow用户

发布于 2020-09-11 05:23:58

当我试图做同样的事情时,我也遇到了这个问题。我的解决方案如下(借用您的代码示例):

代码语言:javascript
复制
    chart = QChart()
    chart.legend().hide()
    chart.addSeries(series)
    chart.createDefaultAxes()
    chart.setAnimationOptions(QChart.SeriesAnimations)

    chart.setBackgroundBrush(QBrush(QColor("transparent")))

    chart.legend().setVisible(True)
    chart.legend().setAlignment(Qt.AlignBottom)
    chartview = QChartView(chart)
    chartview.setRenderHint(QPainter.Antialiasing)
    chartview.setParent(self.Frame1)
    chartview.setGeometry(5, 50, 350, 350)
    chartview.show()


App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec_())

至少在我的使用和测试过程中,这行代码让背景变得透明而不是白色。看起来你只是错过了QBrush(..)部分。

希望这能有所帮助!

最好的

凯文

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61903109

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档