def __init__(self, orientation='bottom', allowAdd=True, **kargs): """ ============== ================================================================================= **Arguments:** orientation Set the orientation of the gradient. Options are: 'left', 'right' 'top', and 'bottom'. allowAdd Specifies whether ticks can be added to the item by the user. tickPen Default is white. Specifies the color of the outline of the ticks. Can be any of the valid arguments for :func:`mkPen <pyqtgraph.mkPen>` ============== ================================================================================= """ ## public GraphicsWidget.__init__(self) self.orientation = orientation self.length = 100 self.tickSize = 15 self.ticks = {} self.maxDim = 20 self.allowAdd = allowAdd if 'tickPen' in kargs: self.tickPen = fn.mkPen(kargs['tickPen']) else: self.tickPen = fn.mkPen('w') self.orientations = { 'left': (90, 1, 1), 'right': (90, 1, 1), 'top': (0, 1, -1), 'bottom': (0, 1, 1) } self.setOrientation(orientation)
def __init__(self, size=None, offset=None, horSpacing=25, verSpacing=0, box=True, labelAlignment='center', showLines=True): """ ============== =============================================================== **Arguments:** size Specifies the fixed size (width, height) of the legend. If this argument is omitted, the legend will autimatically resize to fit its contents. offset Specifies the offset position relative to the legend's parent. Positive values offset from the left or top; negative values offset from the right or bottom. If offset is None, the legend must be anchored manually by calling anchor() or positioned by calling setPos(). horSpacing Specifies the spacing between the line symbol and the label. verSpacing Specifies the spacing between individual entries of the legend vertically. (Can also be negative to have them really close) box Specifies if the Legend should will be drawn with a rectangle around it. labelAlignment Specifies the alignment of the label texts. Possible values are "center", "left" or "right". showLines Specifies whether or not the lines should be shown in the legend. If value is "False" it will only show the labels with the corresponding text color. ============== =============================================================== """ GraphicsWidget.__init__(self) GraphicsWidgetAnchor.__init__(self) self.setFlag(self.ItemIgnoresTransformations) self.layout = QtWidgets.QGraphicsGridLayout() self.layout.setVerticalSpacing(verSpacing) self.layout.setHorizontalSpacing(horSpacing) self._horSpacing = horSpacing self._verSpacing = verSpacing self.setLayout(self.layout) self.legendItems = [] self.plotItems = [] self.hiddenFlag = [] self.size = size self.offset = offset self.box = box self.label_alignment = labelAlignment self.showLines = showLines # A numItems variable needs to be introduced, because chaining removeItem and addItem function in random order, # will otherwise lead to writing in the same layout row. Idea here is to always insert LabelItems on larger # and larger layout row numbers. The GraphicsGridlayout item will not care about empty rows. self.numItems = 0 if size is not None: self.setGeometry(QtCore.QRectF(0, 0, self.size[0], self.size[1]))
def __init__(self, size=None, offset=None): GraphicsWidget.__init__(self) GraphicsWidgetAnchor.__init__(self) self.setFlag(self.ItemIgnoresTransformations) self.layout = QtGui.QGraphicsGridLayout() self.setLayout(self.layout) self.size = size self.offset = offset if size is not None: self.setGeometry(QtCore.QRectF(0, 0, self.size[0], self.size[1]))
def __init__(self, image=None, fillHistogram=True): """ If *image* (ImageItem) is provided, then the control will be automatically linked to the image and changes to the control will be immediately reflected in the image's appearance. By default, the histogram is rendered with a fill. For performance, set *fillHistogram* = False. """ GraphicsWidget.__init__(self) self.lut = None self.imageItem = lambda: None # fake a dead weakref self.layout = QtWidgets.QGraphicsGridLayout() self.setLayout(self.layout) self.layout.setContentsMargins(1, 1, 1, 1) self.layout.setSpacing(0) self.vb = ViewBox(parent=self) self.vb.setMaximumWidth(152) self.vb.setMinimumWidth(45) self.vb.setMouseEnabled(x=False, y=True) self.gradient = GradientEditorItem() self.gradient.setOrientation('right') self.gradient.loadPreset('grey') self.region = LinearRegionItem([0, 1], LinearRegionItem.Horizontal) self.region.setZValue(1000) self.vb.addItem(self.region) self.axis = AxisItem('left', linkView=self.vb, maxTickLength=-10, parent=self) self.layout.addItem(self.axis, 0, 0) self.layout.addItem(self.vb, 0, 1) self.layout.addItem(self.gradient, 0, 2) self.range = None self.gradient.setFlag(self.gradient.ItemStacksBehindParent) self.vb.setFlag(self.gradient.ItemStacksBehindParent) #self.grid = GridItem() #self.vb.addItem(self.grid) self.gradient.sigGradientChanged.connect(self.gradientChanged) self.region.sigRegionChanged.connect(self.regionChanging) self.region.sigRegionChangeFinished.connect(self.regionChanged) self.vb.sigRangeChanged.connect(self.viewRangeChanged) self.plot = PlotDataItem() self.plot.rotate(90) self.fillHistogram(fillHistogram) self.vb.addItem(self.plot) self.autoHistogramRange() if image is not None: self.setImageItem(image)
def __init__(self, size=None, offset=None, horSpacing=25, verSpacing=0, box=True, labelAlignment = 'center', showLines = True): """ ============== =============================================================== **Arguments:** size Specifies the fixed size (width, height) of the legend. If this argument is omitted, the legend will autimatically resize to fit its contents. offset Specifies the offset position relative to the legend's parent. Positive values offset from the left or top; negative values offset from the right or bottom. If offset is None, the legend must be anchored manually by calling anchor() or positioned by calling setPos(). horSpacing Specifies the spacing between the line symbol and the label. verSpacing Specifies the spacing between individual entries of the legend vertically. (Can also be negative to have them really close) box Specifies if the Legend should will be drawn with a rectangle around it. labelAlignment Specifies the alignment of the label texts. Possible values are "center", "left" or "right". showLines Specifies whether or not the lines should be shown in the legend. If value is "False" it will only show the labels with the corresponding text color. ============== =============================================================== """ GraphicsWidget.__init__(self) GraphicsWidgetAnchor.__init__(self) self.setFlag(self.ItemIgnoresTransformations) self.layout = QtGui.QGraphicsGridLayout() self.layout.setVerticalSpacing(verSpacing) self.layout.setHorizontalSpacing(horSpacing) self._horSpacing = horSpacing self._verSpacing = verSpacing self.setLayout(self.layout) self.legendItems = [] self.plotItems = [] self.hiddenFlag = [] self.size = size self.offset = offset self.box = box self.label_alignment = labelAlignment self.showLines = showLines #A numItems variable needs to be introduced, because chaining removeItem and addItem function in random order, # will otherwise lead to writing in the same layout row. Idea here is to always insert LabelItems on larger # and larger layout row numbers. The GraphicsGridlayout item will not care about empty rows. self.numItems = 0 if size is not None: self.setGeometry(QtCore.QRectF(0, 0, self.size[0], self.size[1]))
def __init__(self, image=None, fillHistogram=True): """ If *image* (ImageItem) is provided, then the control will be automatically linked to the image and changes to the control will be immediately reflected in the image's appearance. By default, the histogram is rendered with a fill. For performance, set *fillHistogram* = False. """ GraphicsWidget.__init__(self) self.lut = None self.imageItem = lambda: None # fake a dead weakref self.layout = QtWidgets.QGraphicsGridLayout() self.setLayout(self.layout) self.layout.setContentsMargins(1,1,1,1) self.layout.setSpacing(0) self.vb = ViewBox(parent=self) self.vb.setMaximumWidth(152) self.vb.setMinimumWidth(45) self.vb.setMouseEnabled(x=False, y=True) self.gradient = GradientEditorItem() self.gradient.setOrientation('right') self.gradient.loadPreset('grey') self.region = LinearRegionItem([0, 1], LinearRegionItem.Horizontal) self.region.setZValue(1000) self.vb.addItem(self.region) self.axis = AxisItem('left', linkView=self.vb, maxTickLength=-10, parent=self) self.layout.addItem(self.axis, 0, 0) self.layout.addItem(self.vb, 0, 1) self.layout.addItem(self.gradient, 0, 2) self.range = None self.gradient.setFlag(self.gradient.ItemStacksBehindParent) self.vb.setFlag(self.gradient.ItemStacksBehindParent) #self.grid = GridItem() #self.vb.addItem(self.grid) self.gradient.sigGradientChanged.connect(self.gradientChanged) self.region.sigRegionChanged.connect(self.regionChanging) self.region.sigRegionChangeFinished.connect(self.regionChanged) self.vb.sigRangeChanged.connect(self.viewRangeChanged) self.plot = PlotDataItem() self.plot.rotate(90) self.fillHistogram(fillHistogram) self.vb.addItem(self.plot) self.autoHistogramRange() if image is not None: self.setImageItem(image)
def __init__(self, image=None, fillHistogram=True): """ If *image* (ImageItem) is provided, then the control will be automatically linked to the image and changes to the control will be immediately reflected in the image's appearance. By default, the histogram is rendered with a fill. For performance, set *fillHistogram* = False. """ GraphicsWidget.__init__(self) self.lut = None self.imageItem = None self.first_image = True self.percentageLevel = False self.layout = QtGui.QGraphicsGridLayout() self.setLayout(self.layout) self.layout.setContentsMargins(1, 1, 1, 1) self.layout.setSpacing(0) self.vb = ViewBox() self.vb.setMaximumHeight(30) self.vb.setMinimumHeight(45) self.vb.setMouseEnabled(x=True, y=False) self.gradient = GradientEditorItem() self.gradient.setOrientation("top") self.gradient.loadPreset("grey") self.region = LinearRegionItem([0, 1], LinearRegionItem.Vertical) self.region.setZValue(1000) self.vb.addItem(self.region) self.layout.addItem(self.vb, 1, 0) self.layout.addItem(self.gradient, 0, 0) self.range = None self.gradient.setFlag(self.gradient.ItemStacksBehindParent) self.vb.setFlag(self.gradient.ItemStacksBehindParent) # self.grid = GridItem() # self.vb.addItem(self.grid) self.gradient.sigGradientChanged.connect(self.gradientChanged) self.region.sigRegionChanged.connect(self.regionChanging) self.region.sigRegionChangeFinished.connect(self.regionChanged) self.vb.sigRangeChanged.connect(self.viewRangeChanged) self.plot = PlotDataItem() self.fillHistogram(fillHistogram) self.vb.addItem(self.plot) self.autoHistogramRange() if image is not None: self.setImageItem(image)
def __init__(self, item): GraphicsWidget.__init__(self) self.item = item
def __init__(self, image=None, fillHistogram=False, orientation='horizontal', autoLevel=None): """ If *image* (ImageItem) is provided, then the control will be automatically linked to the image and changes to the control will be immediately reflected in the image's appearance. By default, the histogram is rendered with a fill. For performance, set *fillHistogram* = False. """ GraphicsWidget.__init__(self) self.lut = None self.imageItem = None self.first_image = True self.percentageLevel = False self.orientation = orientation self.autoLevel = autoLevel self.layout = QtWidgets.QGraphicsGridLayout() self.setLayout(self.layout) self.layout.setContentsMargins(1, 1, 1, 1) self.layout.setSpacing(0) self.vb = ViewBox() self.gradient = GradientEditorItem() self.gradient.loadPreset('grey') if orientation == 'horizontal': self.vb.setMouseEnabled(x=True, y=False) self.vb.setMaximumHeight(30) self.vb.setMinimumHeight(45) self.gradient.setOrientation('top') self.region = LogarithmRegionItem([0, 1], LinearRegionItem.Vertical) self.layout.addItem(self.vb, 1, 0) self.layout.addItem(self.gradient, 0, 0) self.gradient.setFlag(self.gradient.ItemStacksBehindParent) self.vb.setFlag(self.gradient.ItemStacksBehindParent) elif orientation == 'vertical': self.vb.setMouseEnabled(x=False, y=True) self.vb.setMaximumWidth(30) self.vb.setMinimumWidth(45) self.gradient.setOrientation('right') self.region = LogarithmRegionItem([0, 1], LinearRegionItem.Horizontal) self.layout.addItem(self.vb, 0, 0) self.layout.addItem(self.gradient, 0, 1) self.gradient.setFlag(self.gradient.ItemStacksBehindParent) self.vb.setFlag(self.gradient.ItemStacksBehindParent) self.region.setZValue(1000) self.vb.addItem(self.region) self.vb.setMenuEnabled(False) # self.grid = GridItem() # self.vb.addItem(self.grid) self.gradient.sigGradientChanged.connect(self.gradientChanged) self.region.sigRegionChanged.connect(self.regionChanging) self.region.sigRegionChangeFinished.connect(self.regionChanged) self.vb.sigRangeChanged.connect(self.viewRangeChanged) self.plot = PlotDataItem() self.vb.autoRange() self.fillHistogram(fillHistogram) self.plot.setPen(pg.mkPen(color=(50, 150, 50), size=3)) self.vb.addItem(self.plot) self.autoHistogramRange() if image is not None: self.setImageItem(image) # self.setSizePolicy(QtWidgets.QSizePolicy.Preferred, QtWidgets.QSizePolicy.Expanding) self.vb.mouseClickEvent = self.empty_function self.vb.mouseDragEvent = self.empty_function self.vb.mouseDoubleClickEvent = self.empty_function self.vb.wheelEvent = self.empty_function
def __init__(self, image=None, fillHistogram=False, orientation='horizontal'): """ If *image* (ImageItem) is provided, then the control will be automatically linked to the image and changes to the control will be immediately reflected in the image's appearance. By default, the histogram is rendered with a fill. For performance, set *fillHistogram* = False. """ GraphicsWidget.__init__(self) self.lut = None self.imageItem = None self.first_image = True self.percentageLevel = False self.orientation = orientation self.range = None self.layout = QtGui.QGraphicsGridLayout() self.setLayout(self.layout) self.layout.setContentsMargins(1, 1, 1, 1) self.layout.setSpacing(0) self.vb = ViewBox() self.gradient = GradientEditorItem() self.gradient.loadPreset('grey') if orientation == 'horizontal': self.vb.setMouseEnabled(x=True, y=False) self.vb.setMaximumHeight(30) self.vb.setMinimumHeight(45) self.gradient.setOrientation('top') self.region = LogarithmRegionItem([0, 1], LinearRegionItem.Vertical) self.layout.addItem(self.vb, 1, 0) self.layout.addItem(self.gradient, 0, 0) self.gradient.setFlag(self.gradient.ItemStacksBehindParent) self.vb.setFlag(self.gradient.ItemStacksBehindParent) elif orientation == 'vertical': self.vb.setMouseEnabled(x=False, y=True) self.vb.setMaximumWidth(30) self.vb.setMinimumWidth(45) self.gradient.setOrientation('right') self.region = LogarithmRegionItem([0, 1], LinearRegionItem.Horizontal) self.layout.addItem(self.vb, 0, 0) self.layout.addItem(self.gradient, 0, 1) self.gradient.setFlag(self.gradient.ItemStacksBehindParent) self.vb.setFlag(self.gradient.ItemStacksBehindParent) self.region.setZValue(1000) self.vb.addItem(self.region) self.vb.setMenuEnabled(False) #self.grid = GridItem() #self.vb.addItem(self.grid) self.gradient.sigGradientChanged.connect(self.gradientChanged) self.region.sigRegionChanged.connect(self.regionChanging) self.region.sigRegionChangeFinished.connect(self.regionChanged) self.vb.sigRangeChanged.connect(self.viewRangeChanged) self.plot = PlotDataItem() if self.orientation == 'horizontal': self.plot.setLogMode(yMode=True, xMode=False) elif self.orientation == 'vertical': self.plot.setLogMode(yMode=False, xMode=True) self.vb.invertX(True) self.vb.autoRange() self.fillHistogram(fillHistogram) self.plot.setPen(pg.mkPen(color=(50, 150, 50), size=3)) self.vb.addItem(self.plot) self.autoHistogramRange() if image is not None: self.setImageItem(image) #self.setSizePolicy(QtGui.QSizePolicy.Preferred, QtGui.QSizePolicy.Expanding) self.vb.mouseClickEvent = self.empty_function self.vb.mouseDragEvent = self.empty_function self.vb.mouseDoubleClickEvent = self.empty_function self.vb.wheelEvent = self.empty_function