Форум сайта python.su
Доброго времени суток уважаемые пайтонисты.
Задача такова: открыть изображение и мышкой нарисовать на нем прямоугольник c возможностью удаления, манипуляции с координатами для вывода/ввода в XML/JSON.
Tkinter умеет работать только с изображениями в формате GIF.
PIL не умеет рисовать мышью и в нем нет нужных виджетов (button, label ect.)
PyGame все таки больше ориентирован на разработку игр и динамической графики, а меня интересуют исключительно геометрические примитивы.
Безусловно есть вероятность что я заблуждаюсь в выше написанном но в сети солюшен я не обнаружил.
Заранее благодарен.
Офлайн
PyQt.QPainter + mouseEvent
https://pythonworld.ru/gui/pyqt5-painting.html
есть easypaint на Qt, исходники доступны
https://github.com/Gr1N/EasyPaint
можете портировать на питон
from PyQt4.QtGui import * from PyQt4.QtCore import * class W(QWidget): def __init__(self,parent=None): QWidget.__init__(self,parent) self.posStart = QPoint() self.posEnd = QPoint() self.resize(400,300) self.pix = QPixmap(self.size()) self.pix.fill(QColor(0,0,0,0)) def mousePressEvent(self,e): self.posStart = e.pos() self.setCursor(Qt.CrossCursor) def mouseReleaseEvent(self,e): self.posEnd = e.pos() self.setCursor(Qt.ArrowCursor) x = self.posStart.x() y = self.posStart.y() w = self.posEnd.x() - self.posStart.x() h = self.posEnd.y() - self.posStart.y() p = QPainter() p.begin(self.pix) pen = QPen() pen.setBrush(QColor(Qt.red)) pen.setWidth(2) p.setPen(pen) p.drawRect(x,y,w,h) p.end() self.update() def paintEvent(self,e): p = QPainter() p.begin(self) p.drawPixmap(0,0,self.pix) p.end() if __name__=="__main__": app = QApplication([]) w = W() w.move(0,0) w.show() app.exec_()
Отредактировано vic57 (Апрель 28, 2017 16:37:26)
Офлайн