import sys
from PyQt5 import QtWidgets, QtCore, QtGui
class ClockWidget(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# Устанавливаем параметры окна
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)
self.setAttribute(QtCore.Qt.WA_TranslucentBackground)
# Устанавливаем таймер для обновления времени
self.timer = QtCore.QTimer(self)
self.timer.timeout.connect(self.update_time)
self.timer.start(1000) # Обновляем каждую секунду
# Создаем метку для отображения времени
self.label = QtWidgets.QLabel(self)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setStyleSheet("font-size: 48px;") # Размер шрифта
# Устанавливаем начальное время
self.update_time()
# Устанавливаем размер окна
self.resize(200, 60)
# Переменные для перемещения окна
self.dragging = False
self.drag_position = None
def update_time(self):
current_time = QtCore.QTime.currentTime()
self.label.setText(current_time.toString("HH:mm:ss"))
self.check_color_below_widget()
def check_color_below_widget(self):
# Получаем глобальные координаты нижней границы виджета
global_pos = self.mapToGlobal(self.rect().bottomLeft())
# Определяем координаты точки на 10 пикселей ниже
point_below = global_pos + QtCore.QPoint(0, 10)
# Получаем цвет пикселя в этой точке
screen = QtWidgets.QApplication.primaryScreen()
pixel_color = screen.grabWindow(0).toImage().pixel(point_below.x(), point_below.y())
color = QtGui.QColor(pixel_color)
# Выводим значения RGB для отладки
print(f"Color below widget: R={color.red()}, G={color.green()}, B={color.blue()}")
# Вычисляем яркость цвета
brightness = (color.red() * 299 + color.green() * 587 + color.blue() * 114) / 1000
# Устанавливаем цвет текста в зависимости от яркости
if brightness < 128: # Темный фон
self.label.setStyleSheet("color: white; font-size: 48px;")
else: # Светлый фон
self.label.setStyleSheet("color: black; font-size: 48px;")
def paintEvent(self, event):
# Рисуем прозрачный фон
painter = QtGui.QPainter(self)
painter.setRenderHint(QtGui.QPainter.Antialiasing)
painter.setBrush(QtGui.QColor(0, 0, 0, 0))
def mousePressEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.dragging = True
self.drag_position = event.globalPos() - self.frameGeometry().topLeft()
def mouseMoveEvent(self, event):
if self.dragging:
self.move(event.globalPos() - self.drag_position)
def mouseReleaseEvent(self, event):
if event.button() == QtCore.Qt.LeftButton:
self.dragging = False
if __name__ == '__main__':
app = QtWidgets.QApplication(sys.argv)
clock = ClockWidget()
clock.show()
sys.exit(app.exec_())