In This PyQt5 tutorial, I will be walking you through the steps to implement the feature where you can drag a button (or an object in general) with your mouse to a different location with your mouse.
Buy Me a Coffee? Your support is much appreciated!
PayPal Me: https://www.paypal.me/jiejenn/5
Venmo: @Jie-Jenn
Source Code:
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtCore import Qt, QMimeData
from PyQt5.QtGui import QDrag
class Button(QPushButton):
def __init__(self, button_text, parent):
super().__init__(button_text, parent)
self.setStyleSheet('width: 200px; height: 50px; font-size: 30px')
def mouseMoveEvent(self, event):
if event.buttons() == Qt.LeftButton:
mimeData = QMimeData()
drag = QDrag(self)
drag.setMimeData(mimeData)
drag.exec_(Qt.MoveAction)
class AppDemo(QWidget):
def __init__(self):
super().__init__()
self.resize(600, 400)
self.setAcceptDrops(True)
self.button = Button('My Button', self)
self.button.move(50, 50)
def dragEnterEvent(self, event):
event.accept()
def dropEvent(self, event):
position = event.pos()
self.button.move(position)
event.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
demo = AppDemo()
demo.show()
sys.exit(app.exec_())