Class: QgsRubberBand

class qgis.gui.QgsRubberBand(mapCanvas: QgsMapCanvas, geometryType: QgsWkbTypes.GeometryType = QgsWkbTypes.LineGeometry)

Bases: PyQt5.QtCore.QObject, qgis._gui.QgsMapCanvasItem

Creates a new RubberBand.

Parameters:
  • mapCanvas – The map canvas to draw onto. Its CRS will be used to map points onto screen coordinates. The ownership is transferred to this canvas.
  • geometryType – Defines how the data should be drawn onto the screen. QgsWkbTypes.LineGeometry, QgsWkbTypes.PolygonGeometry or QgsWkbTypes.PointGeometry

A class for drawing transient features (e.g. digitizing lines) on the map.

The QgsRubberBand class provides a transparent overlay widget for tracking the mouse while drawing polylines or polygons.

Methods

addGeometry Adds the geometry of an existing feature to a rubberband This is useful for multi feature highlighting.
addPoint Adds a vertex to the rubberband and update canvas.
asGeometry Returns the rubberband as a Geometry
childEvent
closePoints Ensures that a polygon geometry is closed and that the last vertex equals the first vertex.
connectNotify
contextMenuEvent
customEvent
disconnectNotify
dragEnterEvent
dragLeaveEvent
dragMoveEvent
drawShape Draws shape of the rubber band.
dropEvent
fillColor Returns the current fill color.
focusInEvent
focusOutEvent
getPoint Returns a vertex
hoverEnterEvent
hoverLeaveEvent
hoverMoveEvent
icon Returns the current icon type to highlight point geometries.
iconSize Returns the current icon size of the point icons.
inputMethodEvent
inputMethodQuery
isSignalConnected
itemChange
keyPressEvent
keyReleaseEvent
mouseDoubleClickEvent
mouseMoveEvent
mousePressEvent
mouseReleaseEvent
movePoint Moves the rubber band point specified by index.
numberOfVertices Returns count of vertices in all lists of mPoint
paint Paints the rubber band in response to an update event.
partSize Returns number of vertices in feature part
prepareGeometryChange
receivers
removeLastPoint Removes the last point.
removePoint Removes a vertex from the rubberband and (optionally) updates canvas.
reset Clears all the geometries in this rubberband.
sceneEvent
sceneEventFilter
secondaryStrokeColor Returns the current secondary stroke color.
sender
senderSignalIndex
setBrushStyle Sets the style of the brush
setColor Sets the color for the rubberband.
setFillColor Sets the fill color for the rubberband
setIcon Sets the icon type to highlight point geometries.
setIconSize Sets the size of the point icons
setLineStyle Sets the style of the line
setRenderContextVariables
setSecondaryStrokeColor Sets a secondary stroke color for the rubberband which will be drawn under the main stroke color.
setStrokeColor Sets the stroke color for the rubberband
setToCanvasRectangle Sets this rubber band to a map canvas rectangle
setToGeometry Sets this rubber band to geom.
setTranslationOffset Adds translation to original coordinates (all in map coordinates)
setWidth Sets the width of the line.
size Returns number of geometries
strokeColor Returns the current stroke color.
timerEvent
updateCanvas
updateMicroFocus
updatePosition
updateRect Recalculates needed rectangle
wheelEvent
width Returns the current width of the line or stroke width for polygon.

Signals

Attributes

ICON_BOX
ICON_CIRCLE
ICON_CROSS
ICON_DIAMOND
ICON_FULL_BOX
ICON_FULL_DIAMOND
ICON_NONE
ICON_X
ICON_BOX = 3
ICON_CIRCLE = 4
ICON_CROSS = 1
ICON_DIAMOND = 6
ICON_FULL_BOX = 5
ICON_FULL_DIAMOND = 7
ICON_NONE = 0
ICON_X = 2
class IconType

Bases: int

addGeometry(self, geometry: QgsGeometry, layer: QgsVectorLayer)

Adds the geometry of an existing feature to a rubberband This is useful for multi feature highlighting. As of 2.0, this method does not change the GeometryType any more. You need to set the GeometryType of the rubberband explicitly by calling reset() or setToGeometry() with appropriate arguments. setToGeometry() is also to be preferred for backwards-compatibility.

Parameters:
  • geometry – the geometry object. Will be treated as a collection of vertices.
  • layer – the layer containing the feature, used for coord transformation to map crs. In case of 0 pointer, the coordinates are not going to be transformed.

addGeometry(self, geometry: QgsGeometry, crs: QgsCoordinateReferenceSystem = QgsCoordinateReferenceSystem()) Adds a geometry to the rubberband.

If crs is specified, the geometry will be automatically reprojected from crs to the canvas CRS.

New in version 3.0.

addPoint(self, p: QgsPointXY, doUpdate: bool = True, geometryIndex: int = 0)

Adds a vertex to the rubberband and update canvas. The rendering of the vertex depends on the current GeometryType and icon. If adding more points consider using update=false for better performance

Parameters:
  • p – The vertex/point to add
  • doUpdate – Should the map canvas be updated immediately?
  • geometryIndex – The index of the feature part (in case of multipart geometries)
asGeometry(self) → QgsGeometry

Returns the rubberband as a Geometry

Returns:A geometry object which reflects the current state of the rubberband.
childEvent()
closePoints(self, doUpdate: bool = True, geometryIndex: int = 0)

Ensures that a polygon geometry is closed and that the last vertex equals the first vertex.

Parameters:
  • doUpdate – set to true to update the map canvas immediately
  • geometryIndex – index of the feature part (in case of multipart geometries)

New in version 2.16.

connectNotify()
contextMenuEvent()
customEvent()
disconnectNotify()
dragEnterEvent()
dragLeaveEvent()
dragMoveEvent()
drawShape(self, p: QPainter, pts: Iterable[Union[QPointF, QPoint]])

Draws shape of the rubber band.

Parameters:
  • p – The QPainter object
  • pts – A list of points used to draw the shape
dropEvent()
fillColor(self) → QColor

Returns the current fill color.

focusInEvent()
focusOutEvent()
getPoint(self, i: int, j: int = 0) → QgsPointXY

Returns a vertex

Parameters:
  • i – The geometry index
  • j – The vertex index within geometry i
hoverEnterEvent()
hoverLeaveEvent()
hoverMoveEvent()
icon(self) → QgsRubberBand.IconType

Returns the current icon type to highlight point geometries.

iconSize(self) → int

Returns the current icon size of the point icons.

inputMethodEvent()
inputMethodQuery()
isSignalConnected()
itemChange()
keyPressEvent()
keyReleaseEvent()
mouseDoubleClickEvent()
mouseMoveEvent()
mousePressEvent()
mouseReleaseEvent()
movePoint(self, p: QgsPointXY, geometryIndex: int = 0)

Moves the rubber band point specified by index. Note that if the rubber band is not used to track the last mouse position, the first point of the rubber band has two vertices

movePoint(self, index: int, p: QgsPointXY, geometryIndex: int = 0) Moves the rubber band point specified by index. Note that if the rubber band is not used to track the last mouse position, the first point of the rubber band has two vertices

numberOfVertices(self) → int

Returns count of vertices in all lists of mPoint

Returns:The total number of vertices
paint(self, p: QPainter)

Paints the rubber band in response to an update event.

Parameters:p – The QPainter object
partSize(self, geometryIndex: int) → int

Returns number of vertices in feature part

Parameters:geometryIndex – The index of the feature part (in case of multipart geometries)
Returns:number of vertices
prepareGeometryChange()
receivers()
removeLastPoint(self, geometryIndex: int = 0, doUpdate: bool = True)

Removes the last point. Most useful in connection with undo operations

removePoint(self, index: int = 0, doUpdate: bool = True, geometryIndex: int = 0)

Removes a vertex from the rubberband and (optionally) updates canvas.

Parameters:
  • index – The index of the vertex/point to remove, negative indexes start at end
  • doUpdate – Should the map canvas be updated immediately?
  • geometryIndex – The index of the feature part (in case of multipart geometries)
reset(self, geometryType: QgsWkbTypes.GeometryType = QgsWkbTypes.LineGeometry)

Clears all the geometries in this rubberband. Sets the representation type according to geometryType.

Parameters:geometryType – Defines how the data should be drawn onto the screen. (Use Qgis.Line, Qgis.Polygon or Qgis.Point)
sceneEvent()
sceneEventFilter()
secondaryStrokeColor(self) → QColor

Returns the current secondary stroke color.

sender()
senderSignalIndex()
setBrushStyle(self, brushStyle: Qt.BrushStyle)

Sets the style of the brush

setColor(self, color: Union[QColor, Qt.GlobalColor, QGradient])

Sets the color for the rubberband. Shorthand method to set fill and stroke color with a single call.

Parameters:color – The color used to render this rubberband
setFillColor(self, color: Union[QColor, Qt.GlobalColor, QGradient])

Sets the fill color for the rubberband

Parameters:color – The color used to render this rubberband

New in version 2.6.

setIcon(self, icon: QgsRubberBand.IconType)

Sets the icon type to highlight point geometries.

Parameters:icon – The icon to visualize point geometries
setIconSize(self, iconSize: int)

Sets the size of the point icons

setLineStyle(self, penStyle: Qt.PenStyle)

Sets the style of the line

setRenderContextVariables()
setSecondaryStrokeColor(self, color: Union[QColor, Qt.GlobalColor, QGradient])

Sets a secondary stroke color for the rubberband which will be drawn under the main stroke color. Set to an invalid color to avoid drawing the secondary stroke.

Parameters:color – The color used to render a secondary stroke color to this rubberband

New in version 3.0.

setStrokeColor(self, color: Union[QColor, Qt.GlobalColor, QGradient])

Sets the stroke color for the rubberband

Parameters:color – The color used to render this rubberband

New in version 2.6.

setToCanvasRectangle(self, rect: QRect)

Sets this rubber band to a map canvas rectangle

Parameters:rect – rectangle in canvas coordinates
setToGeometry(self, geom: QgsGeometry, layer: QgsVectorLayer)

Sets this rubber band to geom. This is useful for feature highlighting. In contrast to addGeometry(), this method does also change the geometry type of the rubberband.

Parameters:
  • geom – the geometry object
  • layer – the layer containing the feature, used for coord transformation to map crs. In case of 0 pointer, the coordinates are not going to be transformed.

setToGeometry(self, geometry: QgsGeometry, crs: QgsCoordinateReferenceSystem = QgsCoordinateReferenceSystem()) Sets this rubber band to geometry. In contrast to addGeometry(), this method does also change the geometry type of the rubberband. The coordinate reference system of the geometry can be specified with crs. If an invalid crs is passed, the geometry will not be reprojected and needs to be in canvas crs already. By default, no reprojection is done.

New in version 3.4.

setTranslationOffset(self, dx: float, dy: float)

Adds translation to original coordinates (all in map coordinates)

Parameters:
  • dx – x translation
  • dy – y translation
setWidth(self, width: int)

Sets the width of the line. Stroke width for polygon.

Parameters:width – The width for any lines painted for this rubberband
size(self) → int

Returns number of geometries

Returns:number of geometries
strokeColor(self) → QColor

Returns the current stroke color.

timerEvent()
updateCanvas()
updateMicroFocus()
updatePosition(self)
updateRect(self)

Recalculates needed rectangle

wheelEvent()
width(self) → int

Returns the current width of the line or stroke width for polygon.