本文整理汇总了Python中AnyQt.QtCore.QRectF.topLeft方法的典型用法代码示例。如果您正苦于以下问题:Python QRectF.topLeft方法的具体用法?Python QRectF.topLeft怎么用?Python QRectF.topLeft使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类AnyQt.QtCore.QRectF
的用法示例。
在下文中一共展示了QRectF.topLeft方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: setLine
# 需要导入模块: from AnyQt.QtCore import QRectF [as 别名]
# 或者: from AnyQt.QtCore.QRectF import topLeft [as 别名]
def setLine(self, line):
"""
Set the arrow base line (a `QLineF` in object coordinates).
"""
if self.__line != line:
self.__line = QLineF(line)
# local item coordinate system
geom = self.geometry().translated(-self.pos())
if geom.isNull() and not line.isNull():
geom = QRectF(0, 0, 1, 1)
arrow_shape = arrow_path_concave(line, self.lineWidth())
arrow_rect = arrow_shape.boundingRect()
if not (geom.contains(arrow_rect)):
geom = geom.united(arrow_rect)
if self.__autoAdjustGeometry:
# Shrink the geometry if required.
geom = geom.intersected(arrow_rect)
# topLeft can move changing the local coordinates.
diff = geom.topLeft()
line = QLineF(line.p1() - diff, line.p2() - diff)
self.__arrowItem.setLine(line)
self.__arrowShadowBase.setLine(line)
self.__line = line
# parent item coordinate system
geom.translate(self.pos())
self.setGeometry(geom)
示例2: updateScaleBox
# 需要导入模块: from AnyQt.QtCore import QRectF [as 别名]
# 或者: from AnyQt.QtCore.QRectF import topLeft [as 别名]
def updateScaleBox(self, p1, p2):
"""
Overload to use ViewBox.mapToView instead of mapRectFromParent
mapRectFromParent (from Qt) uses QTransform.invert() which has
floating-point issues and can't invert the matrix with large
coefficients. ViewBox.mapToView uses invertQTransform from pyqtgraph.
This code, except for first three lines, are copied from the overloaded
method.
"""
p1 = self.mapToView(p1)
p2 = self.mapToView(p2)
r = QRectF(p1, p2)
self.rbScaleBox.setPos(r.topLeft())
self.rbScaleBox.resetTransform()
self.rbScaleBox.scale(r.width(), r.height())
self.rbScaleBox.show()
示例3: adjustGeometry
# 需要导入模块: from AnyQt.QtCore import QRectF [as 别名]
# 或者: from AnyQt.QtCore.QRectF import topLeft [as 别名]
def adjustGeometry(self):
"""
Adjust the widget geometry to exactly fit the arrow inside
while preserving the arrow path scene geometry.
"""
# local system coordinate
geom = self.geometry().translated(-self.pos())
line = self.__line
arrow_rect = self.__arrowItem.shape().boundingRect()
if geom.isNull() and not line.isNull():
geom = QRectF(0, 0, 1, 1)
if not (geom.contains(arrow_rect)):
geom = geom.united(arrow_rect)
geom = geom.intersected(arrow_rect)
diff = geom.topLeft()
line = QLineF(line.p1() - diff, line.p2() - diff)
geom.translate(self.pos())
self.setGeometry(geom)
self.setLine(line)
示例4: SelectTool
# 需要导入模块: from AnyQt.QtCore import QRectF [as 别名]
# 或者: from AnyQt.QtCore.QRectF import topLeft [as 别名]
#.........这里部分代码省略.........
)
self._delete_action.setShortcuts([QKeySequence.Delete,
QKeySequence("Backspace")])
self._delete_action.triggered.connect(self.delete)
def setSelectionRect(self, rect):
if self._selection_rect != rect:
self._selection_rect = QRectF(rect)
self._item.setRect(self._selection_rect)
def selectionRect(self):
return self._item.rect()
def mousePressEvent(self, event):
if event.button() == Qt.LeftButton:
pos = self.mapToPlot(event.pos())
if self._item.isVisible():
if self.selectionRect().contains(pos):
# Allow the event to propagate to the item.
event.setAccepted(False)
self._item.setCursor(Qt.ClosedHandCursor)
return False
self._mouse_dragging = True
self._start_pos = pos
self._item.setVisible(True)
self._plot.addItem(self._item)
self.setSelectionRect(QRectF(pos, pos))
event.accept()
return True
else:
return super().mousePressEvent(event)
def mouseMoveEvent(self, event):
if event.buttons() & Qt.LeftButton:
pos = self.mapToPlot(event.pos())
self.setSelectionRect(QRectF(self._start_pos, pos).normalized())
event.accept()
return True
else:
return super().mouseMoveEvent(event)
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
pos = self.mapToPlot(event.pos())
self.setSelectionRect(QRectF(self._start_pos, pos).normalized())
event.accept()
self.issueCommand.emit(SelectRegion(self.selectionRect()))
self._item.setCursor(Qt.OpenHandCursor)
self._mouse_dragging = False
return True
else:
return super().mouseReleaseEvent(event)
def activate(self):
if self._item is None:
self._item = _RectROI((0, 0), (0, 0), pen=(25, 25, 25))
self._item.setAcceptedMouseButtons(Qt.LeftButton)
self._item.setVisible(False)
self._item.setCursor(Qt.OpenHandCursor)
self._item.sigRegionChanged.connect(self._on_region_changed)
self._item.sigRegionChangeStarted.connect(
self._on_region_change_started)
self._item.sigRegionChangeFinished.connect(
self._on_region_change_finished)
self._plot.addItem(self._item)
self._mouse_dragging = False
self._plot.addAction(self._delete_action)
def deactivate(self):
self._reset()
self._plot.removeAction(self._delete_action)
def _reset(self):
self.setSelectionRect(QRectF())
self._item.setVisible(False)
self._mouse_dragging = False
def delete(self):
if not self._mouse_dragging and self._item.isVisible():
self.issueCommand.emit(DeleteSelection())
self._reset()
def _on_region_changed(self):
if not self._mouse_dragging:
newrect = self._item.rect()
delta = newrect.topLeft() - self._selection_rect.topLeft()
self._selection_rect = newrect
self.issueCommand.emit(MoveSelection(delta))
def _on_region_change_started(self):
if not self._mouse_dragging:
self.editingStarted.emit()
def _on_region_change_finished(self):
if not self._mouse_dragging:
self.editingFinished.emit()
示例5: RectangleSelectionAction
# 需要导入模块: from AnyQt.QtCore import QRectF [as 别名]
# 或者: from AnyQt.QtCore.QRectF import topLeft [as 别名]
class RectangleSelectionAction(UserInteraction):
"""
Select items in the scene using a Rectangle selection
"""
def __init__(self, document, *args, **kwargs):
UserInteraction.__init__(self, document, *args, **kwargs)
# The initial selection at drag start
self.initial_selection = None
# Selection when last updated in a mouseMoveEvent
self.last_selection = None
# A selection rect (`QRectF`)
self.selection_rect = None
# Keyboard modifiers
self.modifiers = 0
def mousePressEvent(self, event):
pos = event.scenePos()
any_item = self.scene.item_at(pos)
if not any_item and event.button() & Qt.LeftButton:
self.modifiers = event.modifiers()
self.selection_rect = QRectF(pos, QSizeF(0, 0))
self.rect_item = QGraphicsRectItem(
self.selection_rect.normalized()
)
self.rect_item.setPen(
QPen(QBrush(QColor(51, 153, 255, 192)),
0.4, Qt.SolidLine, Qt.RoundCap)
)
self.rect_item.setBrush(
QBrush(QColor(168, 202, 236, 192))
)
self.rect_item.setZValue(-100)
# Clear the focus if necessary.
if not self.scene.stickyFocus():
self.scene.clearFocus()
if not self.modifiers & Qt.ControlModifier:
self.scene.clearSelection()
event.accept()
return True
else:
self.cancel(self.ErrorReason)
return False
def mouseMoveEvent(self, event):
if not self.rect_item.scene():
# Add the rect item to the scene when the mouse moves.
self.scene.addItem(self.rect_item)
self.update_selection(event)
return True
def mouseReleaseEvent(self, event):
if event.button() == Qt.LeftButton:
if self.initial_selection is None:
# A single click.
self.scene.clearSelection()
else:
self.update_selection(event)
self.end()
return True
def update_selection(self, event):
"""
Update the selection rectangle from a QGraphicsSceneMouseEvent
`event` instance.
"""
if self.initial_selection is None:
self.initial_selection = set(self.scene.selectedItems())
self.last_selection = self.initial_selection
pos = event.scenePos()
self.selection_rect = QRectF(self.selection_rect.topLeft(), pos)
# Make sure the rect_item does not cause the scene rect to grow.
rect = self._bound_selection_rect(self.selection_rect.normalized())
# Need that 0.5 constant otherwise the sceneRect will still
# grow (anti-aliasing correction by QGraphicsScene?)
pw = self.rect_item.pen().width() + 0.5
self.rect_item.setRect(rect.adjusted(pw, pw, -pw, -pw))
selected = self.scene.items(self.selection_rect.normalized(),
Qt.IntersectsItemShape,
Qt.AscendingOrder)
selected = set([item for item in selected if \
item.flags() & Qt.ItemIsSelectable])
if self.modifiers & Qt.ControlModifier:
for item in selected | self.last_selection | \
self.initial_selection:
item.setSelected(
(item in selected) ^ (item in self.initial_selection)
#.........这里部分代码省略.........