diff options
Diffstat (limited to 'examples/widgets/itemviews/stardelegate/stardelegate.py')
-rw-r--r-- | examples/widgets/itemviews/stardelegate/stardelegate.py | 109 |
1 files changed, 36 insertions, 73 deletions
diff --git a/examples/widgets/itemviews/stardelegate/stardelegate.py b/examples/widgets/itemviews/stardelegate/stardelegate.py index 236dc3db8..973eb14f6 100644 --- a/examples/widgets/itemviews/stardelegate/stardelegate.py +++ b/examples/widgets/itemviews/stardelegate/stardelegate.py @@ -1,58 +1,21 @@ +# Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net> +# Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com> +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -############################################################################# -## -## Copyright (C) 2010 Hans-Peter Jansen <hpj@urpla.net> -## Copyright (C) 2011 Arun Srinivasan <rulfzid@gmail.com> -## Copyright (C) 2016 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$ -## -############################################################################# - -from PySide2.QtWidgets import (QItemDelegate, QStyledItemDelegate, QStyle) +from PySide6.QtWidgets import QStyledItemDelegate, QStyle from starrating import StarRating from stareditor import StarEditor + class StarDelegate(QStyledItemDelegate): """ A subclass of QStyledItemDelegate that allows us to render our pretty star ratings. """ def __init__(self, parent=None): - super(StarDelegate, self).__init__(parent) + super().__init__(parent) def paint(self, painter, option, index): """ Paint the items in the table. @@ -66,7 +29,7 @@ class StarDelegate(QStyledItemDelegate): it works for the purposes of this example. """ if index.column() == 3: - starRating = StarRating(index.data()) + star_rating = StarRating(index.data()) # If the row is currently selected, we need to make sure we # paint the background accordingly. @@ -85,15 +48,15 @@ class StarDelegate(QStyledItemDelegate): # Now that we've painted the background, call starRating.paint() # to paint the stars. - starRating.paint(painter, option.rect, option.palette) + star_rating.paint(painter, option.rect, option.palette) else: QStyledItemDelegate.paint(self, painter, option, index) def sizeHint(self, option, index): """ Returns the size needed to display the item in a QSize object. """ if index.column() == 3: - starRating = StarRating(index.data()) - return starRating.sizeHint() + star_rating = StarRating(index.data()) + return star_rating.sizeHint() else: return QStyledItemDelegate.sizeHint(self, option, index) @@ -107,7 +70,7 @@ class StarDelegate(QStyledItemDelegate): """ if index.column() == 3: editor = StarEditor(parent) - editor.editingFinished.connect(self.commitAndCloseEditor) + editor.editing_finished.connect(self.commit_and_close_editor) return editor else: return QStyledItemDelegate.createEditor(self, parent, option, index) @@ -115,7 +78,7 @@ class StarDelegate(QStyledItemDelegate): def setEditorData(self, editor, index): """ Sets the data to be displayed and edited by our custom editor. """ if index.column() == 3: - editor.starRating = StarRating(index.data()) + editor.star_rating = StarRating(index.data()) else: QStyledItemDelegate.setEditorData(self, editor, index) @@ -123,11 +86,11 @@ class StarDelegate(QStyledItemDelegate): """ Get the data from our custom editor and stuffs it into the model. """ if index.column() == 3: - model.setData(index, editor.starRating.starCount) + model.setData(index, editor.star_rating.star_count) else: QStyledItemDelegate.setModelData(self, editor, model, index) - def commitAndCloseEditor(self): + def commit_and_close_editor(self): """ Erm... commits the data and closes the editor. :) """ editor = self.sender() @@ -139,35 +102,35 @@ class StarDelegate(QStyledItemDelegate): if __name__ == "__main__": """ Run the application. """ - from PySide2.QtWidgets import (QApplication, QTableWidget, QTableWidgetItem, + from PySide6.QtWidgets import (QApplication, QTableWidget, QTableWidgetItem, QAbstractItemView) import sys app = QApplication(sys.argv) # Create and populate the tableWidget - tableWidget = QTableWidget(4, 4) - tableWidget.setItemDelegate(StarDelegate()) - tableWidget.setEditTriggers(QAbstractItemView.DoubleClicked | - QAbstractItemView.SelectedClicked) - tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows) - tableWidget.setHorizontalHeaderLabels(["Title", "Genre", "Artist", "Rating"]) - - data = [ ["Mass in B-Minor", "Baroque", "J.S. Bach", 5], - ["Three More Foxes", "Jazz", "Maynard Ferguson", 4], - ["Sex Bomb", "Pop", "Tom Jones", 3], - ["Barbie Girl", "Pop", "Aqua", 5] ] + table_widget = QTableWidget(4, 4) + table_widget.setItemDelegate(StarDelegate()) + table_widget.setEditTriggers(QAbstractItemView.DoubleClicked + | QAbstractItemView.SelectedClicked) + table_widget.setSelectionBehavior(QAbstractItemView.SelectRows) + table_widget.setHorizontalHeaderLabels(["Title", "Genre", "Artist", "Rating"]) + + data = [["Mass in B-Minor", "Baroque", "J.S. Bach", 5], + ["Three More Foxes", "Jazz", "Maynard Ferguson", 4], + ["Sex Bomb", "Pop", "Tom Jones", 3], + ["Barbie Girl", "Pop", "Aqua", 5]] for r in range(len(data)): - tableWidget.setItem(r, 0, QTableWidgetItem(data[r][0])) - tableWidget.setItem(r, 1, QTableWidgetItem(data[r][1])) - tableWidget.setItem(r, 2, QTableWidgetItem(data[r][2])) + table_widget.setItem(r, 0, QTableWidgetItem(data[r][0])) + table_widget.setItem(r, 1, QTableWidgetItem(data[r][1])) + table_widget.setItem(r, 2, QTableWidgetItem(data[r][2])) item = QTableWidgetItem() - item.setData(0, StarRating(data[r][3]).starCount) - tableWidget.setItem(r, 3, item) + item.setData(0, StarRating(data[r][3]).star_count) + table_widget.setItem(r, 3, item) - tableWidget.resizeColumnsToContents() - tableWidget.resize(500, 300) - tableWidget.show() + table_widget.resizeColumnsToContents() + table_widget.resize(500, 300) + table_widget.show() - sys.exit(app.exec_()) + sys.exit(app.exec()) |