DraggableWindow.py 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. from PyQt5.QtWidgets import QLabel
  2. from PyQt5.QtGui import QMouseEvent
  3. from PyQt5.QtCore import Qt
  4. # 语义识别文字,可拖拽图标界面
  5. class DraggableWindow(QLabel):
  6. def __init__(self, parent=None):
  7. super().__init__(parent)
  8. self.setWindowFlag(Qt.WindowType.WindowStaysOnTopHint, True)
  9. self.setWindowFlag(Qt.WindowType.FramelessWindowHint, True)
  10. self.setWindowFlag(Qt.WindowType.Tool, True)
  11. self.setAttribute(Qt.WidgetAttribute.WA_TranslucentBackground)
  12. self.setMouseTracking(True)
  13. self.dragging = False
  14. self.offset = None
  15. def mousePressEvent(self, event: QMouseEvent) -> None:
  16. if event.button() == Qt.MouseButton.LeftButton:
  17. self.dragging = True
  18. self.offset = event.pos()
  19. def mouseReleaseEvent(self, event: QMouseEvent) -> None:
  20. if event.button() == Qt.MouseButton.LeftButton:
  21. self.dragging = False
  22. def mouseMoveEvent(self, event: QMouseEvent) -> None:
  23. if self.dragging:
  24. delta = event.pos() - self.offset
  25. self.move(self.pos() + delta)