Программа на Python
Делаю прогу на python для гартик фона, нужно чтобы при закреплении я мог взаимодействовать с нижними окнами (тут - с холстом) чтобы я мог рисовать, обводя изображение по контуру. Кто поможет большое спасибо!
скрипт:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt5.QtGui import QPixmap, QPainter, QPaintEvent, QMouseEvent, QColor, QPen, QImage
from PyQt5.QtCore import Qt, QPoint
from PIL import Image
class TransparentImageOverlay(QWidget):
def __init__(self, image_path):
super().__init__()
self.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint)
self.setAttribute(Qt.WA_TranslucentBackground)
# Загрузка изображения
img = Image.open(image_path).convert("RGBA")
width, height = img.size
qimg = QImage(width, height, QImage.Format_RGBA8888)
img_data = img.load()
for y in range(height):
for x in range(width):
r, g, b, a = img_data[x, y]
color = QColor(r, g, b, a)
qimg.setPixel(x, y, color.rgb())
qpixmap = QPixmap.fromImage(qimg)
layout = QVBoxLayout()
label = QLabel(self)
label.setPixmap(qpixmap)
layout.addWidget(label)
self.setLayout(layout)
self.dragging = False
self.offset = None
def setOpacity(self, opacity_value):
self.setWindowOpacity(opacity_value)
def mousePressEvent(self, event: QMouseEvent):
if event.button() == Qt.LeftButton:
self.dragging = True
self.offset = event.globalPos() - self.pos()
def mouseMoveEvent(self, event: QMouseEvent):
if self.dragging:
new_pos = event.globalPos() - self.offset
self.move(new_pos)
def mouseReleaseEvent(self, event: QMouseEvent):
if event.button() == Qt.LeftButton:
self.dragging = False
if __name__ == "__main__":
app = QApplication(sys.argv)
overlay = TransparentImageOverlay('example.png')
overlay.show()
overlay.setOpacity(0.7)
sys.exit(app.exec_())
По дате
По рейтингу
как вариант сделать окно прозрачным для мыши
self.setAttribute(Qt.WA_TransparentForMouseEvents, True)
Больше по теме