Фон: Я пытаюсь сделать griding инструмент с использованием python и pyqt. В частности, я хочу использовать комбинацию graphicsView/graphicsScene, чтобы позволить пользователю размещать и редактировать разделы сетки. В этом контексте сетка представляет собой просто набор перпендикулярных линий.PyQt группировка graphicsScene объектов в один объект
Что-то как:
Вопрос: Как я группа коллекция линий вместе в один объект, так что совокупность линий действует как единый объект (то есть контекстное меню, перетаскивание и т.д. .)
Текущий код: (только графические классы)
from PyQt4 import QtGui, QtCore
class graphicsView(QtGui.QGraphicsView):
def __init__(self,parent=None):
super(graphicsView, self).__init__(parent)
self.parent=parent
def wheelEvent(self,event):
super(graphicsView, self).wheelEvent(event)
factor = 1.2
if event.delta()<0:
factor = 1.0/factor
self.scale(factor,factor)
class graphicsScene(QtGui.QGraphicsScene):
def __init__(self,parent=None):
super(graphicsScene, self).__init__(parent)
self.meshPen=QtGui.QPen(QtCOre.Qt.blue, 1, QtCore.Qt.SolidLine)
def newGrid(self, xmax,ymax,xcells,ycells,xmin=0,ymin=0):
for i in range(xcells+1):
x=i*(xmax-xmin)/xcells-abs(xmin)
self.addLine(x,ymin,x,ymax,self.meshPen)
for j in range(ycells+1):
y=j*(ymax-ymin)/ycells-abs(ymin)
self.addLine(xmin,y,xmax,y,self.meshPen)
Система:
Python 2.7.2, PyQt4 4.9.5-2, окна 7
Возможные решения: (мои случайные мысли)
- Реализовать невидимый прямоугольник наверх сетка для обработки взаимодействия
Nice. Я не понимал, что есть QGraphicsItemGroup. Мне придется попробовать. – Onlyjus