diff options
Diffstat (limited to 'examples/charts/chartthemes/main.py')
-rw-r--r-- | examples/charts/chartthemes/main.py | 126 |
1 files changed, 34 insertions, 92 deletions
diff --git a/examples/charts/chartthemes/main.py b/examples/charts/chartthemes/main.py index 76c5956ab..5787710ca 100644 --- a/examples/charts/chartthemes/main.py +++ b/examples/charts/chartthemes/main.py @@ -1,42 +1,5 @@ -############################################################################# -## -## Copyright (C) 2018 The Qt Company Ltd. -## Contact: http://www.qt.io/licensing/ -## -## This file is part of the Qt for Python examples of the Qt Toolkit. -## -## $QT_BEGIN_LICENSE:BSD$ -## You may use this file under the terms of the BSD license as follows: -## -## "Redistribution and use in source and binary forms, with or without -## modification, are permitted provided that the following conditions are -## met: -## * Redistributions of source code must retain the above copyright -## notice, this list of conditions and the following disclaimer. -## * Redistributions in binary form must reproduce the above copyright -## notice, this list of conditions and the following disclaimer in -## the documentation and/or other materials provided with the -## distribution. -## * Neither the name of The Qt Company Ltd nor the names of its -## contributors may be used to endorse or promote products derived -## from this software without specific prior written permission. -## -## -## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS -## "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT -## LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR -## A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT -## OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, -## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT -## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, -## DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY -## THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT -## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE -## OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE." -## -## $QT_END_LICENSE$ -## -############################################################################# +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause """PySide6 port of the Chart Themes example from Qt v5.x""" @@ -44,7 +7,7 @@ import sys from PySide6.QtCore import QPointF, Qt from PySide6.QtGui import QColor, QPainter, QPalette from PySide6.QtWidgets import (QApplication, QMainWindow, QSizePolicy, - QWidget) + QWidget) from PySide6.QtCharts import (QAreaSeries, QBarSet, QChart, QChartView, QLineSeries, QPieSeries, QScatterSeries, QSplineSeries, QStackedBarSeries) @@ -64,7 +27,7 @@ class ThemeWidget(QWidget): self.value_max = 10 self.value_count = 7 self.data_table = self.generate_random_data(self.list_count, - self.value_max, self.value_count) + self.value_max, self.value_count) self.ui.setupUi(self) self.populate_themebox() @@ -78,8 +41,7 @@ class ThemeWidget(QWidget): # Pie Chart chart_view = QChartView(self.create_pie_chart()) - chart_view.setSizePolicy(QSizePolicy.Ignored, - QSizePolicy.Ignored) + chart_view.setSizePolicy(QSizePolicy.Ignored, QSizePolicy.Ignored) self.ui.gridLayout.addWidget(chart_view, 1, 1) self.charts.append(chart_view) @@ -107,10 +69,10 @@ class ThemeWidget(QWidget): self.ui.antialiasCheckBox.setChecked(True) # Set the colors from the light theme as default ones - pal = qApp.palette() + pal = qApp.palette() # noqa: F821 pal.setColor(QPalette.Window, QColor(0xf0f0f0)) pal.setColor(QPalette.WindowText, QColor(0x404044)) - qApp.setPalette(pal) + qApp.setPalette(pal) # noqa: F821 self.update_ui() @@ -171,7 +133,7 @@ class ThemeWidget(QWidget): for j in range(len(self.data_table[i])): data = self.data_table[i][j] if lower_series: - points = lower_series.pointsVector() + points = lower_series.points() y_value = points[i].y() + data[0].y() upper_series.append(QPointF(j, y_value)) else: @@ -182,10 +144,12 @@ class ThemeWidget(QWidget): lower_series = upper_series chart.createDefaultAxes() - chart.axisX().setRange(0, self.value_count - 1) - chart.axisY().setRange(0, self.value_max) + axis_x = chart.axes(Qt.Horizontal)[0] + axis_x.setRange(0, self.value_count - 1) + axis_y = chart.axes(Qt.Vertical)[0] + axis_y.setRange(0, self.value_max) # Add space to label to add space between labels and axis - chart.axisY().setLabelFormat("%.1f ") + axis_y.setLabelFormat("%.1f ") return chart @@ -203,9 +167,10 @@ class ThemeWidget(QWidget): chart.addSeries(series) chart.createDefaultAxes() - chart.axisY().setRange(0, self.value_max * 2) + axis_y = chart.axes(Qt.Vertical)[0] + axis_y.setRange(0, self.value_max * 2) # Add space to label to add space between labels and axis - chart.axisY().setLabelFormat("%.1f ") + axis_y.setLabelFormat("%.1f ") return chart @@ -222,10 +187,12 @@ class ThemeWidget(QWidget): chart.addSeries(series) chart.createDefaultAxes() - chart.axisX().setRange(0, self.value_max) - chart.axisY().setRange(0, self.value_count) + axis_x = chart.axes(Qt.Horizontal)[0] + axis_x.setRange(0, self.value_max) + axis_y = chart.axes(Qt.Vertical)[0] + axis_y.setRange(0, self.value_count) # Add space to label to add space between labels and axis - chart.axisY().setLabelFormat("%.1f ") + axis_y.setLabelFormat("%.1f ") return chart @@ -259,10 +226,12 @@ class ThemeWidget(QWidget): chart.addSeries(series) chart.createDefaultAxes() - chart.axisX().setRange(0, self.value_max) - chart.axisY().setRange(0, self.value_count) + axis_x = chart.axes(Qt.Horizontal)[0] + axis_x.setRange(0, self.value_max) + axis_y = chart.axes(Qt.Vertical)[0] + axis_y.setRange(0, self.value_count) # Add space to label to add space between labels and axis - chart.axisY().setLabelFormat("%.1f ") + axis_y.setLabelFormat("%.1f ") return chart @@ -278,10 +247,12 @@ class ThemeWidget(QWidget): chart.addSeries(series) chart.createDefaultAxes() - chart.axisX().setRange(0, self.value_max) - chart.axisY().setRange(0, self.value_count) + axis_x = chart.axes(Qt.Horizontal)[0] + axis_x.setRange(0, self.value_max) + axis_y = chart.axes(Qt.Vertical)[0] + axis_y.setRange(0, self.value_count) # Add space to label to add space between labels and axis - chart.axisY().setLabelFormat("%.1f ") + axis_y.setLabelFormat("%.1f ") return chart @@ -299,26 +270,7 @@ class ThemeWidget(QWidget): chart_theme = self.charts[0].chart().theme() if chart_theme != theme: for chart_view in self.charts: - if theme == 0: - theme_name = QChart.ChartThemeLight - elif theme == 1: - theme_name = QChart.ChartThemeBlueCerulean - elif theme == 2: - theme_name = QChart.ChartThemeDark - elif theme == 3: - theme_name = QChart.ChartThemeBrownSand - elif theme == 4: - theme_name = QChart.ChartThemeBlueNcs - elif theme == 5: - theme_name = QChart.ChartThemeHighContrast - elif theme == 6: - theme_name = QChart.ChartThemeBlueIcy - elif theme == 7: - theme_name = QChart.ChartThemeQt - else: - theme_name = QChart.ChartThemeLight - - chart_view.chart().setTheme(theme_name) + chart_view.chart().setTheme(theme) # Set palette colors based on selected theme if theme == QChart.ChartThemeLight: @@ -348,20 +300,10 @@ class ThemeWidget(QWidget): options = self.ui.animatedComboBox.itemData(idx) if len(self.charts): - chart = self.charts[0].chart() - animation_options = chart.animationOptions() + animation_options = self.charts[0].chart().animationOptions() if animation_options != options: for chart_view in self.charts: - options_name = QChart.NoAnimation - if options == 0: - options_name = QChart.NoAnimation - elif options == 1: - options_name = QChart.GridAxisAnimations - elif options == 2: - options_name = QChart.SeriesAnimations - elif options == 3: - options_name = QChart.AllAnimations - chart_view.chart().setAnimationOptions(options_name) + chart_view.chart().setAnimationOptions(options) # Update legend alignment idx = self.ui.legendComboBox.currentIndex() |