【发布时间】:2017-08-07 21:12:25
【问题描述】:
我尝试创建一个简单的 QListWidget 来接受放入其中的文本。不能让它工作。 drop-event 甚至没有被触发,而 drag 事件是另一方面。 谁能指出我正确的方向?我做错了什么?
提前致谢。
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QLabel, QListWidget
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import pyqtSlot
class App(QWidget):
def __init__(self):
super().__init__()
self.title = 'PyQt5 drag and drop'
self.left = 500
self.top = 400
self.width = 400
self.height = 250
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)
listwidget = CustomLabel(self)
listwidget.move(130,15)
self.show()
class CustomLabel(QListWidget):
def __init__(self, parent):
super().__init__(parent)
self.setAcceptDrops(True)
def dragEnterEvent(self, e):
if e.mimeData().hasFormat('text/plain'):
print("dragged")
e.accept()
else:
e.ignore()
def dropEvent(self, e):
print("dropped")
self.addItem(event.mimeData().text())
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = App()
sys.exit(app.exec_())
【问题讨论】:
-
您需要以某种方式启动拖动。看看drag and drop docs。
-
不明白...对不起
-
这只告诉那个特定的小部件 accept 掉落——它与实际开始拖动操作无关。请阅读我第一条评论中链接到的文档。
-
阅读文档对我没有启发,我必须说。无法完全理解那里的代码,因为我目前只熟悉python。
标签: python drag-and-drop qt5 pyqt5 qlistwidget