Python hosting : Host, run, and code Python in the cloud!
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).
Drag and drop using PyQt5
Related course: Create GUI Apps with PyQt5
PyQt5 drag and drop example Drag text from the input field to the label, the label will update its text. Use
pyqtslot to connect the action to a function.
import sysfrom PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QLabelfrom PyQt5.QtGui import QIconfrom PyQt5.QtCore import pyqtSlotclass 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_())
If you are new to programming Python PyQt, I highly recommend this book.
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.
Download PyQT5 Examples
Leave a Reply: