本文整理汇总了Python中PyQt5.QtWidgets.QGraphicsLineItem.setPos方法的典型用法代码示例。如果您正苦于以下问题:Python QGraphicsLineItem.setPos方法的具体用法?Python QGraphicsLineItem.setPos怎么用?Python QGraphicsLineItem.setPos使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QGraphicsLineItem
的用法示例。
在下文中一共展示了QGraphicsLineItem.setPos方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: drawGrid
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setPos [as 别名]
def drawGrid(self):
black_notes = [2,4,6,9,11]
scale_bar = QGraphicsRectItem(0, 0, self.grid_width, self.note_height, self.piano)
scale_bar.setPos(self.piano_width, 0)
scale_bar.setBrush(QColor(100,100,100))
clearpen = QPen(QColor(0,0,0,0))
for i in range(self.end_octave - self.start_octave, self.start_octave - self.start_octave, -1):
for j in range(self.notes_in_octave, 0, -1):
scale_bar = QGraphicsRectItem(0, 0, self.grid_width, self.note_height, self.piano)
scale_bar.setPos(self.piano_width, self.note_height * j + self.octave_height * (i - 1))
scale_bar.setPen(clearpen)
if j not in black_notes:
scale_bar.setBrush(QColor(120,120,120))
else:
scale_bar.setBrush(QColor(100,100,100))
measure_pen = QPen(QColor(0, 0, 0, 120), 3)
half_measure_pen = QPen(QColor(0, 0, 0, 40), 2)
line_pen = QPen(QColor(0, 0, 0, 40))
for i in range(0, int(self.num_measures) + 1):
measure = QGraphicsLineItem(0, 0, 0, self.piano_height + self.header_height - measure_pen.width(), self.header)
measure.setPos(self.measure_width * i, 0.5 * measure_pen.width())
measure.setPen(measure_pen)
if i < self.num_measures:
number = QGraphicsSimpleTextItem('%d' % (i + 1), self.header)
number.setPos(self.measure_width * i + 5, 2)
number.setBrush(Qt.white)
for j in self.frange(0, self.time_sig[0]*self.grid_div/self.time_sig[1], 1.):
line = QGraphicsLineItem(0, 0, 0, self.piano_height, self.header)
line.setZValue(1.0)
line.setPos(self.measure_width * i + self.value_width * j, self.header_height)
if j == self.time_sig[0]*self.grid_div/self.time_sig[1] / 2.0:
line.setPen(half_measure_pen)
else:
line.setPen(line_pen)
示例2: RotaryDialHoverRegion
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setPos [as 别名]
class RotaryDialHoverRegion(QGraphicsEllipseItem):
def __init__(self, rect, parent=None):
# setup DNA line
super(QGraphicsEllipseItem, self).__init__(rect, parent)
self._parent = parent
self.setPen(QPen(Qt.NoPen))
self.setBrush(_HOVER_BRUSH)
self.setAcceptHoverEvents(True)
# hover marker
self._hoverLine = QGraphicsLineItem(-_ROTARY_DELTA_WIDTH/2, 0, _ROTARY_DELTA_WIDTH/2, 0, self)
self._hoverLine.setPen(QPen(QColor(204, 0, 0), .5))
self._hoverLine.hide()
self._startPos = None
self._startAngle = None # save selection start
self._clockwise = None
self.dummy = RotaryDialDeltaItem(0, 0, parent)
self.dummy.hide()
def updateRect(self, rect):
self.setRect(rect)
def hoverEnterEvent(self, event):
self.updateHoverLine(event)
self._hoverLine.show()
# end def
def hoverMoveEvent(self, event):
self.updateHoverLine(event)
# end def
def hoverLeaveEvent(self, event):
self._hoverLine.hide()
# end def
def mousePressEvent(self, event):
r = _RADIUS
self.updateHoverLine(event)
pos = self._hoverLine.pos()
aX, aY, angle = self.snapPosToCircle(pos, r)
if angle != None:
self._startPos = QPointF(aX, aY)
self._startAngle = self.updateHoverLine(event)
self.dummy.updateAngle(self._startAngle, 0)
self.dummy.show()
# mark the start
# f = QGraphicsEllipseItem(pX, pY, 2, 2, self)
# f.setPen(QPen(Qt.NoPen))
# f.setBrush(QBrush(QColor(204, 0, 0)))
# end def
def mouseMoveEvent(self, event):
eventAngle = self.updateHoverLine(event)
# Record initial direction before calling getSpanAngle
if self._clockwise is None:
self._clockwise = False if eventAngle > self._startAngle else True
spanAngle = self.getSpanAngle(eventAngle)
self.dummy.updateAngle(self._startAngle, spanAngle)
# end def
def mouseReleaseEvent(self, event):
self.dummy.hide()
endAngle = self.updateHoverLine(event)
spanAngle = self.getSpanAngle(endAngle)
old_angle = self._parent.virtualHelix().getProperty('eulerZ')
new_angle = round((old_angle - spanAngle) % 360,0)
self._parent.virtualHelix().setProperty('eulerZ', new_angle)
# mark the end
# x = self._hoverLine.x()
# y = self._hoverLine.y()
# f = QGraphicsEllipseItem(x, y, 6, 6, self)
# f.setPen(QPen(Qt.NoPen))
# f.setBrush(QBrush(QColor(204, 0, 0, 128)))
# end def
def updateHoverLine(self, event):
"""
Moves red line to point (aX,aY) on RotaryDialLine closest to event.pos.
Returns the angle of aX, aY, using the Qt arc coordinate system
(0 = east, 90 = north, 180 = west, 270 = south).
"""
r = _RADIUS
aX, aY, angle = self.snapPosToCircle(event.pos(), r)
if angle != None:
self._hoverLine.setPos(aX, aY)
self._hoverLine.setRotation(-angle)
return angle
# end def
def snapPosToCircle(self, pos, radius):
"""Given x, y and radius, return x,y of nearest point on circle, and its angle"""
pX = pos.x()
pY = pos.y()
cX = cY = radius
vX = pX - cX
vY = pY - cY
magV = sqrt(vX*vX + vY*vY)
if magV == 0:
#.........这里部分代码省略.........