Да, вы можете использовать библиотеки Python для работы с низкоуровневыми функциями системы Windows, такими как `win32api`, чтобы получить цвет фона окна под вашим приложением. Ниже приведен пример того, как это можно сделать.
Для начала, убедитесь, что у вас установлена библиотека `pywin32`. Если она еще не установлена, вы можете установить её с помощью pip:
```bash
pip install pywin32
```
Затем можно использовать следующий код, который определяет цвет пикселя под вашим окном:
```python
import sys
import win32gui
import win32api
import win32con
from PyQt5 import QtWidgets, QtGui
class ClockWindow(QtWidgets.QWidget):
def __init__(self):
super().__init__()
self.setWindowFlags(QtCore.Qt.WindowStaysOnTopHint | QtCore.Qt.FramelessWindowHint)
self.setGeometry(100, 100, 300, 100)
self.label = QtWidgets.QLabel("12:00", self)
self.label.setAlignment(QtCore.Qt.AlignCenter)
self.label.setStyleSheet("font-size: 30px;")
self.update_text_color()
def update_text_color(self):
hwnd = win32gui.GetForegroundWindow() # Получаем дескриптор верхнего окна
x, y, _, _ = win32gui.GetWindowRect(hwnd) # Получаем координаты верхнего окна
# Получаем цвет пикселя под вашим приложением
hdc = win32gui.GetDC(hwnd)
pixel_color = win32gui.GetPixel(hdc, x + 1, y + 1) # Пиксель немного смещен, чтобы его не затирала рамка
win32gui.ReleaseDC(hwnd, hdc)
# Преобразование цвета из формата БГР в RGB
b = pixel_color & 0xff
g = (pixel_color >> 8) & 0xff
r = (pixel_color >> 16) & 0xff
# Установка цвета текста в зависимости от фона
brightness = (r + g + b) / 3
if brightness < 128:
self.label.setStyleSheet("color: white; font-size: 30px;")
else:
self.label.setStyleSheet("color: black; font-size: 30px;")
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
clock = ClockWindow()
clock.show()
sys.exit(app.exec_())
```
Обратите внимание на следующее:
1. Код получает дескриптор текущего верхнего окна с `GetForegroundWindow()`.
2. Затем извлекается цвет пикселя из этого окна при помощи `GetPixel()`.
3. На основе яркости извлеченного цвета определяется, какой цвет текста использовать (черный или белый).
Не забудьте проверить, чтобы координаты pikselа были корректны, и возможно, сместить их на несколько пикселей, так как иногда границы окна могут перекрывать нужный пиксель.
Запустите это приложение, чтобы увидеть, как оно меняет цвет текста в зависимости от фона, под которым находится.