PyQt5基础学习-控件可以发生拖拽 1..setDragEnabled(使得控件可以拖拽) 2.setAcceptDrops(控件可以接收拖拽按钮)

将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_())

PyQt5基础学习-控件可以发生拖拽 1..setDragEnabled(使得控件可以拖拽) 2.setAcceptDrops(控件可以接收拖拽按钮)

 

上一篇:asm管理的dg数据文件缺失的处理方法


下一篇:ORA-29339错误解决办法