Я новичок в pyqt. Я делаю программу, которая позволяет вам нажимать на изображение и запоминать координаты точек, на которые вы нажимаете, и нарисовать stickfigure на виджетах графического интерфейса. Мой код сейчас может запросить новое окно, чтобы показать многоугольник с 4 точками. Тем не менее, я надеюсь, что он будет отображаться в файле ui, который я делаю pyqt. Имя объекта для виджета называется widget.I надеюсь, что кто-то может помочь мне изменить код, чтобы отобразить многоугольник виджета gui, не запрашивая новое окно.pyqt рисунок на расширяющемся виджетах GUI
Большое вам спасибо!
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_())
Наконец-то пример, который дает мне полезный код, который действительно работает! –
Как бы вы добавили другое изображение.png в некоторой позиции ?, например, вместо эллипса мне нужны маленькие изображения, я пробовал с addPixmap и addItem, но ни один из них не был успешным. помогите мне – Aleksandar
'' item = self.scene.addPixmap (QtGui.QPixmap ('some_image.png')) '' должен работать. Но он добавляет изображение в (0, 0) позицию, поэтому вам нужно изменить его: '' item.setPos (position) '', где '' position'' может быть, например, '' Event.pos() '' – reclosedev