QGraphicsPixmapItem няма да се показва върху другия QGraphicsPixmapItem

Какво правя грешно тук? Очаквам, че "image1.jpg" се показва над "image.jpg", на позицията, където съм щракнал, но не се показва. Ето моят код (image1.jpg е 10 пъти по-малък от image.jpg):

import sys
from PyQt4 import QtGui, QtCore
from PyQt4.QtGui import *
from PyQt4.QtCore import * 

class DrawImage(QMainWindow): 
    def __init__(self, parent=None):
        super(QMainWindow, self).__init__(parent)
        self.setWindowTitle('Select Window')
        self.local_image = QImage('image.JPG')
        self.local_grview = QGraphicsView()
        self.setCentralWidget( self.local_grview )
        self.local_scene = QGraphicsScene()
        self.image_format = self.local_image.format()
        self.pixMapItem = QGraphicsPixmapItem(QPixmap(self.local_image), None, self.local_scene)
        self.pixMapItem.setZValue(10.0)
        self.local_grview.setScene( self.local_scene )
        self.pixMapItem.mousePressEvent = self.pixelSelect

    def pixelSelect( self, event ):
        position = QPoint( event.pos().x(),  event.pos().y())
        local_image = QImage('image1.JPG')
        pixMapItem = QGraphicsPixmapItem(QPixmap(local_image), self.pixMapItem, self.local_scene)
        pixMapItem.setZValue(100.0)
        pixMapItem.setPos(position.x(), position.y());
        print position, self.pixMapItem.zValue(), pixMapItem.zValue()

def main():
    app = QtGui.QApplication(sys.argv)
    form = DrawImage()
    form.show()
    app.exec_()

if __name__ == '__main__':
    main()

Редактиране 1 Опитах self.local_grview.setUpdatesEnabled(True) и актуализирах сцена в края на метода pixelSelect: self.local_grview.update(), нищо не се промени


person Aleksandar    schedule 28.08.2013    source източник


Отговори (1)


Вашият код изглежда правилен и работи според очакванията за мен, т.е. второто по-малко изображение се показва върху първото.

Опитахте ли да покажете само второто изображение? Може би имате неправилен път, което е причина второто ви изображение да не се показва.

person Tim Wakeham    schedule 02.09.2013
comment
Пътят е правилен. Опитах да покажа само второ изображение и имаше проблем. По някаква причина не се показва. Създадох точно същия (син квадрат 50x50 пиксела .jpg) и сега работи. - person Aleksandar; 02.09.2013