
import sys
from PyQt5.Qt import *
class Window(QWidget):
def __init__(self):
super().__init__()
self.label_1 = None
self.set_ui()
# 重写mouseMoveEvent方法
def mouseMoveEvent(self, a0) -> None:
self.label_1.move(a0.x(), a0.y())
self.label_1.setText(
"窗口:" + str(a0.x()) + " " + str(a0.y()) +
"\n全局:" + str(self.cursor().pos().x()) + " " + str(self.cursor().pos().y())
)
self.label_1.adjustSize()
def set_ui(self):
self.resize(500, 500)
self.setWindowTitle("主窗口")
# 自定义鼠标图片
custom_cursor_pic = QPixmap("cursor.png").scaled(50, 50)
custom_cursor = QCursor(custom_cursor_pic, 0, 0)
self.setCursor(custom_cursor)
# 鼠标初始位置
self.cursor().setPos(0, 0)
# 开启鼠标追踪
self.setMouseTracking(True)
self.label()
self.show()
def label(self):
self.label_1 = CustomLabel(self)
self.label_1.setStyleSheet("background-color:cyan;border:1px solid green")
self.label_1.setText('鼠标初始位置:' + str(self.cursor().pos().x()) + ' ' + str(self.cursor().pos().y()))
# 设置标签内容边距
self.label_1.setContentsMargins(30, 0, 0, 0)
# 开启鼠标追踪,让鼠标在标签上时也进行追踪
self.label_1.setMouseTracking(True)
class CustomLabel(QLabel):
# 重写标签mouseMoveEvent方法
def mouseMoveEvent(self, ev) -> None:
# super().mouseMoveEvent(ev)
# 标记事件没有被处理,以便将事件传递给父对象
ev.ignore()
# ev.accept()
if __name__ == '__main__':
app = QApplication(sys.argv)
window = Window()
sys.exit(app.exec_())