PyQt5 无边框窗口重新定义鼠标事件
Posted tylerwu
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;}
以上是关于PyQt5 无边框窗口重新定义鼠标事件的主要内容,如果未能解决你的问题,请参考以下文章
Qt自定义界面边框后,移动鼠标拖动界面,界面会拖到任务栏以下。。。如何解决?
WPF中鼠标事件MouseLeftButtonDown,MouseLeftButtonUp实现无边框窗体的最大化,还原