将LineEdit的文本拖拽到下拉框中
""" 让控件支持拖拽动作 A.setDragEnabled(True) 可以进行拖拽 B.setAcceptDrops(True) 可以接收拖拽 B需要两个事件 1. dragEnterEvent 将A拖到B触发 2. dropEvent 在B的区域放下A时触发 """ import sys, math from PyQt5.QtWidgets import * from PyQt5.QtGui import * from PyQt5.QtCore import * class MyComboxBox(QComboBox): def __init__(self): super(MyComboxBox, self).__init__() self.setAcceptDrops(True) #构造A拖拽到B时的触发 def dragEnterEvent(self, e): print(e) if e.mimeData().hasText(): e.accept() else: e.ignore() #构造将A放下以后B的操作 def dropEvent(self, e): self.addItem(e.mimeData().text()) #在下拉列表中添加文本 class DrapDropDemo(QWidget): def __init__(self): super(DrapDropDemo, self).__init__() formLayout = QFormLayout() formLayout.addRow(QLabel("请将左边的文本拖拽到右边的下拉列表中")) lineEdit = QLineEdit() lineEdit.setDragEnabled(True) #让lineEdit可以拖动 combo = MyComboxBox() formLayout.addRow(lineEdit, combo) self.setLayout(formLayout) self.setWindowTitle("拖拽案例") if __name__ == "__main__": app = QApplication(sys.argv) main = DrapDropDemo() main.show() sys.exit(app.exec_())