aboutsummaryrefslogtreecommitdiffstats
path: root/sources/pyside2/doc/tutorials/expenses/steps/10-expenses.py
diff options
context:
space:
mode:
Diffstat (limited to 'sources/pyside2/doc/tutorials/expenses/steps/10-expenses.py')
-rw-r--r--sources/pyside2/doc/tutorials/expenses/steps/10-expenses.py207
1 files changed, 0 insertions, 207 deletions
diff --git a/sources/pyside2/doc/tutorials/expenses/steps/10-expenses.py b/sources/pyside2/doc/tutorials/expenses/steps/10-expenses.py
deleted file mode 100644
index 2a7bddab0..000000000
--- a/sources/pyside2/doc/tutorials/expenses/steps/10-expenses.py
+++ /dev/null
@@ -1,207 +0,0 @@
-#############################################################################
-##
-## Copyright (C) 2019 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$
-##
-#############################################################################
-
-import sys
-from PySide2.QtCore import Qt, Slot
-from PySide2.QtGui import QAction, QPainter
-from PySide2.QtWidgets import (QQApplication, QHeaderView, QHBoxLayout, QLabel, QLineEdit,
- QMainWindow, QPushButton, QTableWidget, QTableWidgetItem,
- QVBoxLayout, QWidget)
-from PySide2.QtCharts import QtCharts
-
-
-class Widget(QWidget):
- def __init__(self):
- QWidget.__init__(self)
- self.items = 0
-
- # Example data
- self._data = {"Water": 24.5, "Electricity": 55.1, "Rent": 850.0,
- "Supermarket": 230.4, "Internet": 29.99, "Bars": 21.85,
- "Public transportation": 60.0, "Coffee": 22.45, "Restaurants": 120}
-
- # Left
- self.table = QTableWidget()
- self.table.setColumnCount(2)
- self.table.setHorizontalHeaderLabels(["Description", "Price"])
- self.table.horizontalHeader().setSectionResizeMode(QHeaderView.Stretch)
-
- # Chart
- self.chart_view = QtCharts.QChartView()
- self.chart_view.setRenderHint(QPainter.Antialiasing)
-
- # Right
- self.description = QLineEdit()
- self.price = QLineEdit()
- self.add = QPushButton("Add")
- self.clear = QPushButton("Clear")
- self.quit = QPushButton("Quit")
- self.plot = QPushButton("Plot")
-
- # Disabling 'Add' button
- self.add.setEnabled(False)
-
- self.right = QVBoxLayout()
- self.right.setMargin(10)
- self.right.addWidget(QLabel("Description"))
- self.right.addWidget(self.description)
- self.right.addWidget(QLabel("Price"))
- self.right.addWidget(self.price)
- self.right.addWidget(self.add)
- self.right.addWidget(self.plot)
- self.right.addWidget(self.chart_view)
- self.right.addWidget(self.clear)
- self.right.addWidget(self.quit)
-
- # QWidget Layout
- self.layout = QHBoxLayout()
-
- #self.table_view.setSizePolicy(size)
- self.layout.addWidget(self.table)
- self.layout.addLayout(self.right)
-
- # Set the layout to the QWidget
- self.setLayout(self.layout)
-
- # Signals and Slots
- self.add.clicked.connect(self.add_element)
- self.quit.clicked.connect(self.quit_application)
- self.plot.clicked.connect(self.plot_data)
- self.clear.clicked.connect(self.clear_table)
- self.description.textChanged[str].connect(self.check_disable)
- self.price.textChanged[str].connect(self.check_disable)
-
- # Fill example data
- self.fill_table()
-
- @Slot()
- def add_element(self):
- des = self.description.text()
- price = self.price.text()
-
- self.table.insertRow(self.items)
- description_item = QTableWidgetItem(des)
- price_item = QTableWidgetItem("{:.2f}".format(float(price)))
- price_item.setTextAlignment(Qt.AlignRight)
-
- self.table.setItem(self.items, 0, description_item)
- self.table.setItem(self.items, 1, price_item)
-
- self.description.setText("")
- self.price.setText("")
-
- self.items += 1
-
- @Slot()
- def check_disable(self, s):
- if not self.description.text() or not self.price.text():
- self.add.setEnabled(False)
- else:
- self.add.setEnabled(True)
-
- @Slot()
- def plot_data(self):
- # Get table information
- series = QtCharts.QPieSeries()
- for i in range(self.table.rowCount()):
- text = self.table.item(i, 0).text()
- number = float(self.table.item(i, 1).text())
- series.append(text, number)
-
- chart = QtCharts.QChart()
- chart.addSeries(series)
- chart.legend().setAlignment(Qt.AlignLeft)
- self.chart_view.setChart(chart)
-
- @Slot()
- def quit_application(self):
- QApplication.quit()
-
- def fill_table(self, data=None):
- data = self._data if not data else data
- for desc, price in data.items():
- description_item = QTableWidgetItem(desc)
- price_item = QTableWidgetItem("{:.2f}".format(price))
- price_item.setTextAlignment(Qt.AlignRight)
- self.table.insertRow(self.items)
- self.table.setItem(self.items, 0, description_item)
- self.table.setItem(self.items, 1, price_item)
- self.items += 1
-
- @Slot()
- def clear_table(self):
- self.table.setRowCount(0)
- self.items = 0
-
-
-class MainWindow(QMainWindow):
- def __init__(self, widget):
- QMainWindow.__init__(self)
- self.setWindowTitle("Tutorial")
-
- # Menu
- self.menu = self.menuBar()
- self.file_menu = self.menu.addMenu("File")
-
- # Exit QAction
- exit_action = QAction("Exit", self)
- exit_action.setShortcut("Ctrl+Q")
- exit_action.triggered.connect(self.exit_app)
-
- self.file_menu.addAction(exit_action)
- self.setCentralWidget(widget)
-
- @Slot()
- def exit_app(self, checked):
- QApplication.quit()
-
-
-if __name__ == "__main__":
- # Qt Application
- app = QApplication(sys.argv)
- # QWidget
- widget = Widget()
- # QMainWindow using QWidget as central widget
- window = MainWindow(widget)
- window.resize(800, 600)
- window.show()
-
- # Execute application
- sys.exit(app.exec_())