aboutsummaryrefslogtreecommitdiffstats
path: root/examples/widgets/draganddrop/draggabletext/draggabletext.py
diff options
context:
space:
mode:
Diffstat (limited to 'examples/widgets/draganddrop/draggabletext/draggabletext.py')
-rw-r--r--examples/widgets/draganddrop/draggabletext/draggabletext.py126
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())