Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Override
- def dragEnterEvent(self, event):
- if event.mimeData().hasFormat("text/plain"):
- event.acceptProposedAction()
- print("Drag entered at: " + str(event.pos()))
- import sys
- import os
- from PyQt5.QtCore import *
- from PyQt5.QtGui import *
- from PyQt5.QtWidgets import *
- '''================================================================================'''
- '''| CUSTOM QLINE-EDIT |'''
- '''================================================================================'''
- class CustomLineEdit(QLineEdit):
- def __init__(self, *args, **kwargs):
- super(CustomLineEdit, self).__init__(*args, **kwargs)
- self.setReadOnly(True)
- self.setContextMenuPolicy(Qt.NoContextMenu)
- self.setMouseTracking(True)
- self.setCursorPosition(0)
- self.dragStartPosition = 0
- self.setAcceptDrops(True)
- self.setFixedHeight(50)
- self.setFixedWidth(300)
- ''''''
- def mousePressEvent(self, event):
- super(CustomLineEdit, self).mousePressEvent(event)
- if (event.button() == Qt.RightButton) or (event.modifiers() & Qt.ControlModifier):
- return
- else:
- self.dragStartPosition = event.pos()
- ###
- ''''''
- def mouseMoveEvent(self, event):
- event.accept()
- if event.buttons() == Qt.NoButton:
- return
- if (event.pos() - self.dragStartPosition).manhattanLength() < QApplication.startDragDistance():
- return
- # Start dragging
- # ---------------
- drag = QDrag(self)
- drag.setPixmap(QPixmap("cmd.png"))
- mimeData = QMimeData()
- mimeData.setText("my mime data")
- drag.setMimeData(mimeData)
- dropAction = drag.exec(Qt.CopyAction | Qt.MoveAction)
- ''''''
- def dragEnterEvent(self, event):
- if event.mimeData().hasFormat("text/plain"):
- event.acceptProposedAction()
- print("Drag entered at: " + str(event.pos()))
- ###
- ''''''
- def dragLeaveEvent(self, event):
- event.accept()
- # print("Drag left at: " + str(event.pos())) # <- doesn't work :-(
- print("Drag left at: ?")
- ''''''
- def dropEvent(self, event):
- if event.mimeData().hasFormat("text/plain"):
- event.acceptProposedAction()
- print("Drag dropped at: " + str(event.pos()))
- ###
- ''''''
- '''================================================================================'''
- '''| CUSTOM MAIN WINDOW |'''
- '''================================================================================'''
- class CustomMainWindow(QMainWindow):
- def __init__(self):
- super(CustomMainWindow, self).__init__()
- # -------------------------------- #
- # Window setup #
- # -------------------------------- #
- # 1. Define the geometry of the main window
- # ------------------------------------------
- self.setGeometry(100, 100, 800, 200)
- self.setWindowTitle("QLineEdit test")
- # 2. Create frame and layout
- # ---------------------------
- self.__frm = QFrame(self)
- self.__frm.setStyleSheet("QWidget { background-color: #ffffff }")
- self.__lyt = QVBoxLayout()
- self.__lyt.setAlignment(Qt.AlignTop)
- self.__frm.setLayout(self.__lyt)
- self.setCentralWidget(self.__frm)
- # 3. Create QLineEdit
- # -------------------
- self.__myQLineEdit = CustomLineEdit()
- self.__lyt.addWidget(self.__myQLineEdit)
- self.show()
- '''=== end Class ==='''
- if __name__ == '__main__':
- app = QApplication(sys.argv)
- QApplication.setStyle(QStyleFactory.create('Fusion'))
- myGUI = CustomMainWindow()
- sys.exit(app.exec_())
- ''''''
- Drag entered at: PyQt5.QtCore.QPoint(100, 22)
- Drag left at: ?
- Drag entered at: PyQt5.QtCore.QPoint(132, 49)
- Drag left at: ?
- Drag entered at: PyQt5.QtCore.QPoint(229, 49)
- Drag left at: ?
- Drag entered at: PyQt5.QtCore.QPoint(242, 49)
- Drag dropped at: PyQt5.QtCore.QPoint(230, 23)
Add Comment
Please, Sign In to add comment