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;}