PyQt6 Updated Frameless Draggable Window

1k Views Asked by At

I Haven't yet seen an updated version of the code for PyQt6, so i'm posting the snippet here

def center(self):
        qr = self.frameGeometry()
        cp = self.screen().availableGeometry().center()
        qr.moveCenter(cp)
        self.move(qr.topLeft())

    def mousePressEvent(self, event):
        self.oldPos = event.position().toPoint()

    def mouseMoveEvent(self, event):
        delta = QPoint(event.position().toPoint() - self.oldPos)
        self.move(self.x() + delta.x(), self.y() + delta.y())
        
    def mouseReleaseEvent(self, event):
        self.oldPos = event.position().toPoint()
1

There are 1 best solutions below

0
On

you can use this updated code for PyQt6:

def center(self):
    qr = self.frameGeometry()
    cp = self.screen().availableGeometry().center()
    qr.moveCenter(cp)
    self.move(qr.topLeft())
        
def mousePressEvent(self, event):
    self.dragPos = event.globalPosition().toPoint()


def mouseMoveEvent(self, event):
     self.move(self.pos() + event.globalPosition().toPoint() - self.dragPos )
     self.dragPos = event.globalPosition().toPoint()
     event.accept()