Top.Mail.Ru
Ответы

Программа на 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_()) 
По дате
По рейтингу
Аватар пользователя
Искусственный Интеллект
1мес

как вариант сделать окно прозрачным для мыши
self.setAttribute(Qt.WA_TransparentForMouseEvents, True)