Jestem nowy w pyqt. Robię program, który pozwala klikać obraz i pamiętać współrzędne klikanych punktów i narysować stickfigure na widżecie GUI. Teraz mój kod może wyświetlić nowe okno, pokazujące wielokąt z 4 punktami. Mam jednak nadzieję, że będzie można go wyświetlić na pliku ui, który robię wcześniej przez pyqt. Nazwa obiektu dla widgetu nazywa się widget. Mam nadzieję, że ktoś mi pomoże zmodyfikować kod, aby wyświetlić wielokąt na widżecie GUI, nie wyświetlając nowego okna.rysowanie pyqta na widgecie exsiting GUI
Dziękuję bardzo!
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_())
Nareszcie przykład, który daje mi użyteczny kod, który faktycznie działa! –
Jak dodać kolejne image.png w jakiejś pozycji ?, na przykład zamiast elipsy Potrzebuję trochę obrazów, próbowałem z addPixmap i addItem, ale żadna z nich nie powiodła się. proszę pomóż mi – Aleksandar
'' item = self.scene.addPixmap (QtGui.QPixmap ('some_image.png')) '' powinno działać. Ale dodaje obraz do pozycji (0, 0), więc musisz go zmienić: '' item.setPos (position) '', gdzie '' position'' może być np. '' event.pos() '' – reclosedev