PyQt5基礎學習-界面隨着鼠標移動 1.QMouseEvent.globalPos(獲得鼠標的位置) 2.QWidget.pos(當前界面的位置) 3.self.setCursor(QCursor(Qt.OpenHandCursor))(設置點擊后鼠標的樣子)


通過計算鼠標的位置和初始化位置來對選框進行移動操作

AbnormityWindowMove.py 

"""
實現不規則窗口的移動(異形窗口)

通過mask實現異形窗口

需要一張透明的png圖, 透明部分被扣出, 形成一個非矩形區域
"""

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import *

class AbnormityWindowMove(QWidget):
    def __init__(self):
        super(AbnormityWindowMove, self).__init__()
        self.setWindowTitle("異形窗口")
        self.pix = QBitmap("../picture/mask.png")
        self.resize(self.pix.size())
        self.setMask(self.pix)

    def mousePressEvent(self, event):
        if event.button() == Qt.LeftButton:
            self.m_drag = True

            self.m_DragPosition = event.globalPos() - self.pos() #self.pos()表示當前窗口的位置
            #設置點擊以后設置小手指
            self.setCursor(QCursor(Qt.OpenHandCursor))
            # print(event.globalPos())
            # print(event.pos())
            # print(self.pos())
        if event.button() == Qt.RightButton:
            self.close()

    def mouseMoveEvent(self, QMouseEvent):
        if Qt.LeftButton and self.m_drag:
            # 當左鍵移動窗體修改偏移值
            # QPoint
            # 實時計算窗口左上角坐標
            print(self.m_DragPosition)
            #當前的鼠標位置-初始化的位置
            self.move(QMouseEvent.globalPos() - self.m_DragPosition)

    def mouseReleaseEvent(self, QMouseEvent):
        self.m_drag = False
        self.setCursor(QCursor(Qt.ArrowCursor))
    
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.drawPixmap(0, 0, self.pix.width(), self.pix.height(),
                           QPixmap("../picture/screen1.jpg"))




if __name__ == "__main__":
    app = QApplication(sys.argv)
    form = AbnormityWindowMove()
    form.show()
    sys.exit(app.exec_())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM