Reading about Python? Actually practice it. Try PyChallenge free

Python Tutorial

PyQt5 drag and drop

Like any modern GUI toolkit, PyQt supports drag and drop. A widget parameter must be set using the setDragEnabled(True) method call. A custom widget should then be set to accept a drop with setAcceptDrops(True).

pyqt-drag-and-drop Drag and drop using PyQt5

Related course:
Practice Python with interactive exercises

PyQt5 drag and drop example

Drag text from the input field to the label, the label will update its text.

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QLabel
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot

class App(QWidget):

def __init__(self): super().__init__() self.title = 'PyQt5 drag and drop - pythonspot.com' self.left = 10 self.top = 10 self.width = 320 self.height = 60 self.initUI() def initUI(self): self.setWindowTitle(self.title) self.setGeometry(self.left, self.top, self.width, self.height) editBox = QLineEdit('Drag this', self) editBox.setDragEnabled(True) editBox.move(10, 10) editBox.resize(100,32) button = CustomLabel('Drop here.', self) button.move(130,15) self.show() @pyqtSlot() def on_click(self): print('PyQt5 button click') class CustomLabel(QLabel): def __init__(self, title, parent): super().__init__(title, parent) self.setAcceptDrops(True)

def dragEnterEvent(self, e): if e.mimeData().hasFormat('text/plain'): e.accept() else: e.ignore() def dropEvent(self, e): self.setText(e.mimeData().text())

if __name__ == '__main__': app = QApplication(sys.argv) ex = App() sys.exit(app.exec_())

The textbox is created with the call QLineEdit(). A custom class (CustomLabel) is created that accepts drag and drop. Both events are defined as methods and have their logic executed if the event occurs.

BackNext