This article is mainly for you to introduce the PYTHON3+PYQT5 implementation of drag-and-drop function, with a certain reference value, interested in small partners can refer to
This article is an example of "Python Qt GUI Quick Programming" in the 10th chapter drag and drop with python3+pyqt5 to rewrite, the chart list, tables and other drag and drop, the basic principle is identical, all using Setacceptdrops (True) and setdragenabled (True).
#!/usr/bin/env python3import osimport sysfrom pyqt5.qtcore import qtfrom pyqt5.qtwidgets import (QApplication, QDialog, Q Hboxlayout, Qlistwidget, Qlistwidgetitem, Qsplitter, qtablewidget) from Pyqt5.qtgui import Qiconclass Form (QDialog): def __init__ (self, Parent=none): Super (Form, self). __init__ (parent) Listwidget = Qlistwidget () listwidget.setacceptdrops ( True) listwidget.setdragenabled (true) path = Os.path.dirname (__file__) for image in sorted (Os.listdir (PAT H, "Images")): If Image.endswith (". png"): item = Qlistwidgetitem (Image.split (".") [0].capitalize ()) Item.seticon (Qicon (Os.path.join (Path, "images/{0}". Format (image))) Listwidget.additem (ite m) Iconlistwidget = Qlistwidget () iconlistwidget.setacceptdrops (True) iconlistwidget.setdragenabled (True) Iconlistwidget.setviewmode (qlistwidget.iconmode) Tablewidget = Qtablewidget () tablewidget.setrowcount (5) TABLEWIDG Et.setcolumncount (2) tablewidget.sethorizontalheaderlabels (["Column #1", "COlumn #2 "]) Tablewidget.setacceptdrops (true) tablewidget.setdragenabled (true) splitter = Qsplitter (qt.horizontal) SPL Itter.addwidget (Listwidget) splitter.addwidget (iconlistwidget) splitter.addwidget (tableWidget) layout = QHBoxLayout () Layout.addwidget (splitter) self.setlayout (layout) self.setwindowtitle ("Drag and Drop") if __name__ = = "__main__": App = Qapplication (sys.argv) Form = form () form.show () app.exec_ ()
Operation Result: