Pyqt dibujo en un widget existente de GUI

Soy nuevo en PyQT. Estoy haciendo un progtwig que te permite hacer clic en la imagen y recordar las coordenadas de los puntos en los que haces clic y dibujar una figura en un widget de la GUI. Mi código en este momento puede mostrar una nueva ventana para mostrar un polígono con 4 puntos. Sin embargo, espero que se pueda mostrar en el archivo ui que ya he creado con pyqt. El nombre del objeto para el widget se llama widget. Espero que alguien pueda ayudarme a modificar el código para mostrar el polígono en el widget de GUI sin que aparezca una nueva ventana.

¡¡¡Muchas gracias!!!

import sys from PyQt4.QtCore import * from PyQt4 import QtGui, QtCore from PyQt4.QtGui import * from Main_window import * global imgloc imgloc = "1.jpg" array = [] clicks = 0 class MyForm(QtGui.QMainWindow): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.ui = Ui_MainWindow() self.ui.setupUi(self) self.local_image = QImage(imgloc) self.imageLocation = imgloc self.local_scene = QGraphicsScene() self.pixMapItem = QGraphicsPixmapItem(QPixmap(self.local_image), None, self.local_scene) self.ui.graphicsView_5.setScene( self.local_scene ) self.pixMapItem.mousePressEvent = self.pixelSelect def pixelSelect(self,event): global imgloc a = event.pos().x() b = event.pos().y() global clicks global array if clicks != 4: clicks += 1 point = QPoint(a,b) array.append(point) else: clicks = 0 dialog = DialogBody() dialog.show() dialog.exec_() array = [] class DialogBody(QDialog): def __init__(self,parent=None): super(QDialog,self).__init__(parent) self.setGeometry(100, 100, QImage(imgloc).height(), QImage(imgloc).width()) def paintEvent(self,e): qp = QtGui.QPainter() qp.begin(self) self.drawBody(qp) qp.end() def drawBody(self, qp): qp.setPen(QtCore.Qt.red) qp.drawPolygon(array[0],array[1],array[2],array[3]) qp.drawEllipse(array[0],2,2) qp.drawEllipse(array[1],2,2) qp.drawEllipse(array[2],2,2) qp.drawEllipse(array[3],2,2) if __name__ == "__main__": app = QtGui.QApplication(sys.argv) myapp= MyForm() myapp.show() sys.exit(app.exec_()) 

Parece que quieres dibujar elementos en QGraphicsScene ? En este caso podría agregar elementos a la escena:

 #!/usr/bin/env python import sys from PyQt4 import QtCore, QtGui class MainWidget(QtGui.QWidget): def __init__(self, parent=None): QtGui.QWidget.__init__(self, parent) self.scene = QtGui.QGraphicsScene() self.view = QtGui.QGraphicsView(self.scene) layout = QtGui.QVBoxLayout() layout.addWidget(self.view) self.setLayout(layout) self.pixmap_item = QtGui.QGraphicsPixmapItem(QtGui.QPixmap('image.png'), None, self.scene) self.pixmap_item.mousePressEvent = self.pixelSelect self.click_positions = [] def pixelSelect(self, event): self.click_positions.append(event.pos()) if len(self.click_positions) < 4: return pen = QtGui.QPen(QtCore.Qt.red) self.scene.addPolygon(QtGui.QPolygonF(self.click_positions), pen) for point in self.click_positions: self.scene.addEllipse(point.x(), point.y(), 2, 2, pen) self.click_positions = [] if __name__ == "__main__": app = QtGui.QApplication(sys.argv) widget = MainWidget() widget.resize(640, 480) widget.show() sys.exit(app.exec_()) 

QGraphicsScene tiene muchas características.

Lea la descripción general de Graphics View Framework en documentos Qt.