欢迎来我的博客

PyQt5 无边框窗口重新定义鼠标事件

PyQt5 无边框窗口重新定义鼠标事件

 

#! /usr/bin/env python

# -*- coding:utf-8 -*-

 

import sys

from PyQt5.QtWidgets import QApplication, QWidget

from PyQt5.QtCore import Qt 

from PyQt5.QtGui import QCursor

 

class NoBorderWindow(QWidget):

    def __init__(self):

        super().__init__()

        self.window_UI()

        self.qss()

 

    def window_UI(self):

        self.resize(600, 200) 

        self.setWindowFlags(Qt.FramelessWindowHint)

 

    def qss(self):

        self.qssfile = "./qss/noborder.qss"

        self.style = CommonStyleSheet.loadqss(self.qssfile)

        self.setStyleSheet(self.style)

 

    # 重新定义鼠标事件

    def mousePressEvent(self, QMouseEvent):

        if QMouseEvent.button() == Qt.LeftButton:

            self.drag = True

            self.dragPosition = QMouseEvent.globalPos() - self.pos()

            QMouseEvent.accept()

            self.setCursor(QCursor(Qt.PointingHandCursor))

 

    def mouseMoveEvent(self, QMouseEvent):

        if Qt.LeftButton and self.drag:

            self.move(QMouseEvent.globalPos() - self.dragPosition)

            QMouseEvent.accept()

 

    def mouseReleaseEvent(self, QMouseEvent):

        self.drag = False

        QMouseEvent.accept()

        self.setCursor(QCursor(Qt.ArrowCursor))

 

class CommonStyleSheet:

    def __init__(self):

        pass

 

    @staticmethod

    def loadqss(style):

        with open (style, "r", encoding="utf-8") as f:

            return f.read()

 

if __name__ == "__main__":

    app = QApplication(sys.argv)

    win = NoBorderWindow()

    win.show()

    sys.exit(app.exec_())

 

 

Qss文件:

 

#w{background-image:url(./images/bg.gif);}

QWidget{background-color: greenyellow;}

 

 

posted on 2020-05-01 19:24  tylerwu  阅读(546)  评论(0编辑  收藏  举报

导航