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: