Added Functional Health Warning
This commit is contained in:
@ -1,80 +0,0 @@
|
||||
import sys
|
||||
from PyQt5.QtWidgets import QApplication, QWidget
|
||||
from PyQt5.QtCore import Qt, QRect, QPoint
|
||||
from PyQt5.QtGui import QPainter, QPen, QColor, QFont, QFontMetrics
|
||||
|
||||
class OverlayCanvas(QWidget):
|
||||
"""
|
||||
UI overlay for drawing and interacting with on-screen elements.
|
||||
"""
|
||||
def __init__(self, parent=None):
|
||||
super().__init__(parent)
|
||||
|
||||
# **Full-screen overlay**
|
||||
screen_geo = QApplication.primaryScreen().geometry()
|
||||
self.setGeometry(screen_geo) # Set to full screen
|
||||
|
||||
self.setWindowFlags(Qt.FramelessWindowHint | Qt.WindowStaysOnTopHint)
|
||||
self.setAttribute(Qt.WA_TranslucentBackground, True)
|
||||
self.setAttribute(Qt.WA_NoSystemBackground, True)
|
||||
self.setAttribute(Qt.WA_OpaquePaintEvent, False)
|
||||
self.setAttribute(Qt.WA_AlwaysStackOnTop, True)
|
||||
|
||||
# **Helper Object: Low Health Alert**
|
||||
self.helper_LowHealthAlert = QRect(250, 300, 900, 35) # Adjusted width and height
|
||||
self.dragging = False
|
||||
self.resizing = False
|
||||
self.drag_offset = QPoint()
|
||||
|
||||
def paintEvent(self, event):
|
||||
"""Draw the helper overlay objects."""
|
||||
painter = QPainter(self)
|
||||
painter.setPen(Qt.NoPen)
|
||||
painter.setBrush(QColor(255, 0, 0)) # Solid red rectangle
|
||||
painter.drawRect(self.helper_LowHealthAlert)
|
||||
|
||||
# Draw bold white text centered within the rectangle
|
||||
font = QFont("Arial", 14, QFont.Bold) # Scaled text
|
||||
painter.setFont(font)
|
||||
painter.setPen(QColor(255, 255, 255))
|
||||
|
||||
text = "LOW HEALTH"
|
||||
metrics = QFontMetrics(font)
|
||||
text_width = metrics.horizontalAdvance(text)
|
||||
text_height = metrics.height()
|
||||
text_x = self.helper_LowHealthAlert.center().x() - text_width // 2
|
||||
text_y = self.helper_LowHealthAlert.center().y() + text_height // 4
|
||||
|
||||
painter.drawText(text_x, text_y, text)
|
||||
|
||||
def mousePressEvent(self, event):
|
||||
"""Detect clicks for dragging and resizing the helper object."""
|
||||
if event.button() == Qt.LeftButton:
|
||||
if self.helper_LowHealthAlert.contains(event.pos()):
|
||||
if event.pos().x() > self.helper_LowHealthAlert.right() - 10 and event.pos().y() > self.helper_LowHealthAlert.bottom() - 10:
|
||||
self.resizing = True
|
||||
else:
|
||||
self.dragging = True
|
||||
self.drag_offset = event.pos() - self.helper_LowHealthAlert.topLeft()
|
||||
|
||||
def mouseMoveEvent(self, event):
|
||||
"""Handle dragging and resizing movements."""
|
||||
if self.dragging:
|
||||
self.helper_LowHealthAlert.moveTopLeft(event.pos() - self.drag_offset)
|
||||
self.update()
|
||||
elif self.resizing:
|
||||
new_width = max(150, event.pos().x() - self.helper_LowHealthAlert.x())
|
||||
new_height = max(20, event.pos().y() - self.helper_LowHealthAlert.y())
|
||||
self.helper_LowHealthAlert.setSize(new_width, new_height)
|
||||
self.update()
|
||||
|
||||
def mouseReleaseEvent(self, event):
|
||||
"""End dragging or resizing event."""
|
||||
self.dragging = False
|
||||
self.resizing = False
|
||||
|
||||
if __name__ == '__main__':
|
||||
app_gui = QApplication(sys.argv)
|
||||
overlay_window = OverlayCanvas()
|
||||
overlay_window.show()
|
||||
sys.exit(app_gui.exec_())
|
Reference in New Issue
Block a user