
Это мой код:
import sys
from PyQt5.QtCore import QRect
from PyQt5.QtGui import QPixmap, QPainter, QPen, QColor
from PyQt5.QtWidgets import *
from test import Ui_MainWindow
from PyQt5.QtCore import Qt, QRect, QPoint
class MainWindow(QMainWindow):
def __init__(self,parent = None):
QMainWindow.__init__(self)
self.ui = Ui_MainWindow()
self.ui.setupUi(self)
self.boxes = [] # Klonlanmış box'ların listesi
self.original_box = QPixmap("box.png").scaled(100, 150) # Orjinal box resmi
self.original_palette = QPixmap("palette.png")
# print( self.img.width(),self.img.height())
self.ui.image.setPixmap(self.original_box)
self.ui.palet.setPixmap(self.original_palette)
self.dragging = False # Sürükleme durumu
self.offset = None # Sürükleme konumu
self.ui.image.setFixedSize(self.original_box.width(), self.original_box.height())
self.ui.palet.setFixedSize(self.original_palette.width(), self.original_palette.height())
# self.ui.image.setScaledContents(True)
self.ui.image.setContentsMargins(0, 0, 0, 0)
self.ui.image.setStyleSheet("QLabel { padding: 0px; }")
self.ui.palet.setContentsMargins(0, 0, 0, 0)
self.ui.palet.setStyleSheet("QLabel { padding: 0px; }")
print("After")
self.ui.widget_2.setAcceptDrops(True) # Bırakma işlemini kabul et
self.rectangle = QRect(500,400,self.original_box.width(), self.original_box.height())
def paintEvent(self, event):
painter = QPainter()
pen = QPen(QColor(0, 0, 0), 10)
painter.setPen(pen)
painter.drawRect(self.rectangle)
painter.drawEllipse(285, 45, 30, 50)
# self.update()
# Orjinal box'ı çiz
# painter.drawPixmap(100, 150, self.original_box)
# print("draw",self.dragging)
# Sürüklenen box'ı çiz
if self.dragging:
# print(self.dragging)
painter.drawPixmap(self.offset.x() - self.original_box.width() / 2,
self.offset.y() - self.original_box.height() / 2,
self.original_box)
# self.ui.image.setPixmap(self.original_box)
# Klonlanmış box'ları çiz
for box in self.boxes:
painter.drawPixmap(box.topLeft(), self.original_box)
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
# print("MAUSE GLOBAL POS",self.ui.image.mapFromGlobal(event.globalPos()))
# print(self.ui.image.rect().contains(self.ui.image.mapFromGlobal(event.globalPos())))
print(self.ui.widget_2.rect())
if(self.ui.image.rect().contains(self.ui.image.mapFromGlobal(event.globalPos()))):
self.dragging = True
self.offset = event.pos()
print("Offset point", self.offset)
def mouseMoveEvent(self, event):
if self.dragging:
# print("DRAGGING")
# Sürüklenen box'ın merkezini güncelle
self.offset = event.pos()
self.update()
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton and self.dragging:
print("RELEASE")
self.dragging = False
# Yeni box'ı oluştur
new_box = QRect(self.offset.x() - self.original_box.width() / 2,
self.offset.y() - self.original_box.height() / 2,
self.original_box.width(), self.original_box.height())
self.boxes.append(new_box)
self.update()
if __name__ == "__main__":
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
Подробнее здесь: https://stackoverflow.com/questions/783 ... abel-pyqt5