Удалить элемент из QListWidget при перетаскивании - PullRequest
1 голос
/ 05 марта 2020

У меня есть два QListWidget с элементами рядом. Я хотел бы установить события, позволяющие

  1. удалить элемент из списка 1 при его перетаскивании в список 2

  2. и наоборот

Вот код:

from PyQt5.QtWidgets import QApplication, QWidget, QListWidget, QHBoxLayout,QListWidgetItem
from PyQt5.QtGui import QIcon
import sys
import glob
import os


class Window(QWidget):
    def __init__(self):
        super().__init__()

        self.myListWidget1 = QListWidget()
        self.myListWidget2 = QListWidget()
        self.myListWidget1.setAcceptDrops(True)
        self.myListWidget1.setDragEnabled(True)
        self.myListWidget2.setAcceptDrops(True)
        self.myListWidget2.setDragEnabled(True)
        self.setGeometry(300, 350, 500, 300)
        self.myLayout = QHBoxLayout()
        self.myLayout.addWidget(self.myListWidget1)
        self.myLayout.addWidget(self.myListWidget2)

        os.chdir("./Downloads")
        for file in glob.glob("*.pdf"):
            QListWidgetItem(file, self.myListWidget1)

        self.setWindowTitle('Drag and Drop');
        self.setLayout(self.myLayout)

        self.show()

App = QApplication(sys.argv)
window = Window()
sys.exit(App.exec())

1 Ответ

1 голос
/ 05 марта 2020

Он должен быть установлен как defaultDropAction из QListWidget in Qt::MoveAction:

self.myListWidget1.setDefaultDropAction(Qt.MoveAction)
self.myListWidget2.setDefaultDropAction(Qt.MoveAction)
...