diff options
Diffstat (limited to 'examples/widgets/draganddrop/draggabletext/draggabletext.py')
-rw-r--r-- | examples/widgets/draganddrop/draggabletext/draggabletext.py | 126 |
1 files changed, 45 insertions, 81 deletions
diff --git a/examples/widgets/draganddrop/draggabletext/draggabletext.py b/examples/widgets/draganddrop/draggabletext/draggabletext.py index 77a40b1a5..6ffdbd70e 100644 --- a/examples/widgets/draganddrop/draggabletext/draggabletext.py +++ b/examples/widgets/draganddrop/draggabletext/draggabletext.py @@ -1,107 +1,71 @@ +# Copyright (C) 2013 Riverbank Computing Limited. +# Copyright (C) 2022 The Qt Company Ltd. +# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR BSD-3-Clause -############################################################################# -## -## Copyright (C) 2013 Riverbank Computing Limited. -## 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$ -## -############################################################################# - -"""PySide2 port of the widgets/draganddrop/draggabletext example from Qt v5.x, originating from PyQt""" - -from PySide2.QtCore import QFile, QIODevice, QMimeData, QPoint, Qt, QTextStream -from PySide2.QtGui import QDrag, QPalette, QPixmap -from PySide2.QtWidgets import QApplication, QFrame, QLabel, QWidget - -import draggabletext_rc +"""PySide6 port of the widgets/draganddrop/draggabletext example from Qt v5.x, + originating from PyQt""" + +from PySide6.QtCore import QFile, QIODevice, QMimeData, QPoint, Qt, QTextStream +from PySide6.QtGui import QDrag, QPalette, QPixmap +from PySide6.QtWidgets import QApplication, QFrame, QLabel, QWidget + +import draggabletext_rc # noqa: F401 class DragLabel(QLabel): def __init__(self, text, parent): - super(DragLabel, self).__init__(text, parent) + super().__init__(text, parent) self.setAutoFillBackground(True) self.setFrameShape(QFrame.Panel) self.setFrameShadow(QFrame.Raised) def mousePressEvent(self, event): - hotSpot = event.pos() + hot_spot = event.position().toPoint() - mimeData = QMimeData() - mimeData.setText(self.text()) - mimeData.setData('application/x-hotspot', - b'%d %d' % (hotSpot.x(), hotSpot.y())) + mime_data = QMimeData() + mime_data.setText(self.text()) + hx = hot_spot.x() + hy = hot_spot.y() + mime_data.setData('application/x-hotspot', f'{hx} {hy}'.encode('utf-8')) pixmap = QPixmap(self.size()) self.render(pixmap) drag = QDrag(self) - drag.setMimeData(mimeData) + drag.setMimeData(mime_data) drag.setPixmap(pixmap) - drag.setHotSpot(hotSpot) + drag.setHotSpot(hot_spot) - dropAction = drag.exec_(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) + drop_action = drag.exec(Qt.CopyAction | Qt.MoveAction, Qt.CopyAction) - if dropAction == Qt.MoveAction: + if drop_action == Qt.MoveAction: self.close() self.update() class DragWidget(QWidget): def __init__(self, parent=None): - super(DragWidget, self).__init__(parent) + super().__init__(parent) - dictionaryFile = QFile(':/dictionary/words.txt') - dictionaryFile.open(QIODevice.ReadOnly) + dictionary_file = QFile(':/dictionary/words.txt') + dictionary_file.open(QIODevice.ReadOnly) x = 5 y = 5 - for word in QTextStream(dictionaryFile).readAll().split(): - wordLabel = DragLabel(word, self) - wordLabel.move(x, y) - wordLabel.show() - x += wordLabel.width() + 2 + for word in QTextStream(dictionary_file).readAll().split(): + word_label = DragLabel(word, self) + word_label.move(x, y) + word_label.show() + x += word_label.width() + 2 if x >= 195: x = 5 - y += wordLabel.height() + 2 + y += word_label.height() + 2 - newPalette = self.palette() - newPalette.setColor(QPalette.Window, Qt.white) - self.setPalette(newPalette) + new_palette = self.palette() + new_palette.setColor(QPalette.Window, Qt.white) + self.setPalette(new_palette) self.setAcceptDrops(True) self.setMinimumSize(400, max(200, y)) @@ -121,20 +85,20 @@ class DragWidget(QWidget): if event.mimeData().hasText(): mime = event.mimeData() pieces = mime.text().split() - position = event.pos() - hotSpot = QPoint() + position = event.position().toPoint() + hot_spot = QPoint() - hotSpotPos = mime.data('application/x-hotspot').split(' ') - if len(hotSpotPos) == 2: - hotSpot.setX(hotSpotPos[0].toInt()[0]) - hotSpot.setY(hotSpotPos[1].toInt()[0]) + hot_spot_pos = mime.data('application/x-hotspot').split(' ') + if len(hot_spot_pos) == 2: + hot_spot.setX(hot_spot_pos[0].toInt()[0]) + hot_spot.setY(hot_spot_pos[1].toInt()[0]) for piece in pieces: - newLabel = DragLabel(piece, self) - newLabel.move(position - hotSpot) - newLabel.show() + new_label = DragLabel(piece, self) + new_label.move(position - hot_spot) + new_label.show() - position += QPoint(newLabel.width(), 0) + position += QPoint(new_label.width(), 0) if event.source() in self.children(): event.setDropAction(Qt.MoveAction) @@ -152,4 +116,4 @@ if __name__ == '__main__': app = QApplication(sys.argv) window = DragWidget() window.show() - sys.exit(app.exec_()) + sys.exit(app.exec()) |