本文整理汇总了Python中PyQt5.QtWidgets.QGraphicsLineItem.setLine方法的典型用法代码示例。如果您正苦于以下问题:Python QGraphicsLineItem.setLine方法的具体用法?Python QGraphicsLineItem.setLine怎么用?Python QGraphicsLineItem.setLine使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PyQt5.QtWidgets.QGraphicsLineItem
的用法示例。
在下文中一共展示了QGraphicsLineItem.setLine方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Python代码示例。
示例1: generateData
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
def generateData(self, canvas, lines, params):
scene = QGraphicsScene()
scene.setSceneRect(canvas)
group = scene.createItemGroup([])
for line in lines:
clone = QGraphicsLineItem(line)
clone.setLine(line.line())
clone.setPen(line.pen())
scene.addItem(clone)
group.addToGroup(clone)
pixmaps = []
for i in xrange(params.count):
pixmaps.append(self.generateRandom(scene, group, canvas, params))
return pixmaps
示例2: ParticipantItem
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
class ParticipantItem(QGraphicsItem):
def __init__(self, model_item: Participant, parent=None):
super().__init__(parent)
self.model_item = model_item
self.text = QGraphicsTextItem(self)
self.line = QGraphicsLineItem(self)
self.line.setPen(QPen(Qt.darkGray, 1, Qt.DashLine, Qt.RoundCap, Qt.RoundJoin))
self.refresh()
def update_position(self, x_pos=-1, y_pos=-1):
if x_pos == -1:
x_pos = self.x_pos()
if y_pos == -1:
y_pos = self.line.line().y2()
self.text.setPos(x_pos - (self.text.boundingRect().width() / 2), 0)
self.line.setLine(x_pos, 30, x_pos, y_pos)
def x_pos(self):
return self.line.line().x1()
def width(self):
return self.boundingRect().width()
def refresh(self):
self.text.setPlainText("?" if not self.model_item else self.model_item.shortname)
if hasattr(self.model_item, "simulate") and self.model_item.simulate:
font = QFont()
font.setBold(True)
self.text.setFont(font)
self.text.setDefaultTextColor(Qt.darkGreen)
self.line.setPen(QPen(Qt.darkGreen, 2, Qt.SolidLine, Qt.RoundCap, Qt.RoundJoin))
else:
self.text.setFont(QFont())
self.text.setDefaultTextColor(constants.LINECOLOR)
self.line.setPen(QPen(Qt.darkGray, 1, Qt.DashLine, Qt.RoundCap, Qt.RoundJoin))
def boundingRect(self):
return self.childrenBoundingRect()
def paint(self, painter, option, widget):
pass
示例3: PreXoverItemGroup
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
#.........这里部分代码省略.........
# Qt +angle is Clockwise (CW), model +angle is CCW
mgroove = -mgroove
fwd_pxis = self.fwd_prexover_items
rev_pxis = self.rev_prexover_items
for i in range(int(step_size)):
inset = i*spiral_factor # spiral layout
fwd = PreXoverItem(i, tpb, step_size, colors[i], self, is_fwd=True)
rev = PreXoverItem(i, tpb, step_size, colors[-1 - i], self, is_fwd=False)
fwd.setPos(x - inset, y)
rev.setPos(x - inset, y)
fwd.setTransformOriginPoint((-radius + iw + inset), 0)
rev.setTransformOriginPoint((-radius + iw + inset), 0)
fwd.setRotation(round(i*tpb % 360, 3))
rev.setRotation(round((i*tpb + mgroove) % 360, 3))
fwd.setBondLineLength(inset + iw)
rev.setBondLineLength(inset + iw)
fwd_pxis[i] = fwd
rev_pxis[i] = rev
for i in range(int(step_size) - 1):
fwd, next_fwd = fwd_pxis[i], fwd_pxis[i + 1]
j = (step_size - 1) - i
rev, next_rev = rev_pxis[j], rev_pxis[j - 1]
fwd.set3pItem(next_fwd)
rev.set3pItem(next_rev)
next_fwd.set5pItem(fwd)
next_rev.set5pItem(rev)
# end def
def baseNearestPoint(self, is_fwd, scene_pos):
"""Summary
Args:
is_fwd (bool): used to check fwd or rev lists.
scene_pos (QPointF): scene coordinate position
Returns:
PreXoverItem: base nearest to position
"""
pos_array = self.fwd_pos_array if is_fwd else self.rev_pos_array
dist_2 = np.sum((pos_array - (scene_pos.x(), scene_pos.y()))**2, axis=1)
near_idx = np.argmin(dist_2)
near_pxi = self.fwd_prexover_items[near_idx] if is_fwd else self.rev_prexover_items[near_idx]
# Draw a line
p1 = self.mapFromScene(scene_pos.x(), scene_pos.y())
p2 = self.mapFromScene(near_pxi.scenePos())
line = QLineF(p1, p2)
self.baseNearLine.setLine(line)
def destroyItem(self):
"""Summary
"""
fpxis = self.fwd_prexover_items
rpxis = self.rev_prexover_items
scene = self.scene()
for i in range(len(fpxis)):
x = fpxis.pop(i)
x.destroyItem()
x = rpxis.pop(i)
x.destroyItem()
self.virtual_helix_item = None
self.model_part = None
scene.removeItem(self.active_wedge_gizmo)
self.active_wedge_gizmo = None
scene.removeItem(self)
# end def
def updateTurnsPerRepeat(self):
"""Summary
"""
step_size, bases_per_turn, tpb, mgroove = self.virtual_helix_item.getAngularProperties()
mgroove = -mgroove
fpxis = self.fwd_prexover_items
rpxis = self.rev_prexover_items
for i in range(int(step_size)):
fwd = self.fwd_prexover_items[i]
rev = self.rev_prexover_items[i]
fwd.setRotation(round((i*tpb) % 360, 3))
rev.setRotation(round((i*tpb + mgroove) % 360, 3))
for i in range(int(step_size) - 1):
fwd, next_fwd = fpxis[i], fpxis[i + 1]
j = (step_size - 1) - i
rev, next_rev = rpxis[j], rpxis[j - 1]
fwd.set3pItem(next_fwd)
rev.set3pItem(next_rev)
next_fwd.set5pItem(fwd)
next_rev.set5pItem(rev)
# end def
def partCrossoverSpanAngle(self):
"""
Returns:
int: Crossover span angle from Part.
"""
return self.virtual_helix_item.partCrossoverSpanAngle()
def updateModelActiveBaseInfo(self, pre_xover_info):
"""Notify model of pre_xover_item hover state.
"""
self.model_part.setActiveBaseInfo(pre_xover_info)
示例4: DiagramScene
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
class DiagramScene(QGraphicsScene):
InsertItem, InsertLine, InsertText, MoveItem = range(4)
itemInserted = pyqtSignal(DiagramItem)
textInserted = pyqtSignal(QGraphicsTextItem)
itemSelected = pyqtSignal(QGraphicsItem)
def __init__(self, itemMenu, parent=None):
super(DiagramScene, self).__init__(parent)
self.myItemMenu = itemMenu
self.myMode = self.MoveItem
self.myItemType = DiagramItem.Step
self.line = None
self.textItem = None
self.myItemColor = Qt.white
self.myTextColor = Qt.black
self.myLineColor = Qt.black
self.myFont = QFont()
def setLineColor(self, color):
self.myLineColor = color
if self.isItemChange(Arrow):
item = self.selectedItems()[0]
item.setColor(self.myLineColor)
self.update()
def setTextColor(self, color):
self.myTextColor = color
if self.isItemChange(DiagramTextItem):
item = self.selectedItems()[0]
item.setDefaultTextColor(self.myTextColor)
def setItemColor(self, color):
self.myItemColor = color
if self.isItemChange(DiagramItem):
item = self.selectedItems()[0]
item.setBrush(self.myItemColor)
def setFont(self, font):
self.myFont = font
if self.isItemChange(DiagramTextItem):
item = self.selectedItems()[0]
item.setFont(self.myFont)
def setMode(self, mode):
self.myMode = mode
def setItemType(self, type):
self.myItemType = type
def editorLostFocus(self, item):
cursor = item.textCursor()
cursor.clearSelection()
item.setTextCursor(cursor)
if item.toPlainText():
self.removeItem(item)
item.deleteLater()
def mousePressEvent(self, mouseEvent):
if (mouseEvent.button() != Qt.LeftButton):
return
if self.myMode == self.InsertItem:
item = DiagramItem(self.myItemType, self.myItemMenu)
item.setBrush(self.myItemColor)
self.addItem(item)
item.setPos(mouseEvent.scenePos())
self.itemInserted.emit(item)
elif self.myMode == self.InsertLine:
self.line = QGraphicsLineItem(QLineF(mouseEvent.scenePos(),
mouseEvent.scenePos()))
self.line.setPen(QPen(self.myLineColor, 2))
self.addItem(self.line)
elif self.myMode == self.InsertText:
textItem = DiagramTextItem()
textItem.setFont(self.myFont)
textItem.setTextInteractionFlags(Qt.TextEditorInteraction)
textItem.setZValue(1000.0)
textItem.lostFocus.connect(self.editorLostFocus)
textItem.selectedChange.connect(self.itemSelected)
self.addItem(textItem)
textItem.setDefaultTextColor(self.myTextColor)
textItem.setPos(mouseEvent.scenePos())
self.textInserted.emit(textItem)
super(DiagramScene, self).mousePressEvent(mouseEvent)
def mouseMoveEvent(self, mouseEvent):
if self.myMode == self.InsertLine and self.line:
newLine = QLineF(self.line.line().p1(), mouseEvent.scenePos())
self.line.setLine(newLine)
elif self.myMode == self.MoveItem:
super(DiagramScene, self).mouseMoveEvent(mouseEvent)
def mouseReleaseEvent(self, mouseEvent):
if self.line and self.myMode == self.InsertLine:
#.........这里部分代码省略.........
示例5: DiagramScene
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
#.........这里部分代码省略.........
item.delete_later()
# noinspection PyArgumentList
def insert_item(self, item_type=None, x=None, y=None, text=None):
if not text:
text, ok = QInputDialog.getText(QInputDialog(), 'Insert name', 'Enter new object name:')
if not ok: # TODO
return
item = FlumeObject(item_type, text).pictogram
item.setBrush(self.my_item_color)
self.addItem(item)
item.setPos(x, y)
return item
def mousePressEvent(self, mouse_event):
if mouse_event.button() != Qt.LeftButton:
return
if self.my_mode == self.InsertItem:
x = mouse_event.scenePos().x() # // 50 * 50
y = mouse_event.scenePos().y() # // 50 * 50
item = self.insert_item(self.my_item_type, x, y)
self.itemInserted.emit(item.flume_component)
elif self.my_mode == self.InsertLine:
self.line = QGraphicsLineItem(QLineF(mouse_event.scenePos(),
mouse_event.scenePos()))
self.line.setPen(QPen(self.my_line_color, 2))
self.addItem(self.line)
elif self.my_mode == self.InsertText:
text_item = DiagramTextItem()
text_item.setFont(self.my_font)
text_item.setTextInteractionFlags(Qt.TextEditorInteraction)
text_item.setZValue(1000.0)
text_item.lostFocus.connect(self.editor_lost_focus)
# text_item.selectedChange.connect(self.itemSelected)
self.addItem(text_item)
text_item.setDefaultTextColor(self.my_text_color)
text_item.setPos(mouse_event.scenePos())
self.textInserted.emit(text_item)
else:
self.m_dragged = QGraphicsScene.itemAt(self, mouse_event.scenePos(), QTransform())
if self.m_dragged:
self.my_mode = self.MoveItem
self.m_drag_offset = mouse_event.scenePos() - self.m_dragged.pos()
super(DiagramScene, self).mousePressEvent(mouse_event)
def mouseMoveEvent(self, mouse_event):
if self.my_mode == self.InsertLine and self.line:
new_line = QLineF(self.line.line().p1(), mouse_event.scenePos())
self.line.setLine(new_line)
elif self.my_mode == self.MoveItem:
if self.m_dragged:
self.m_dragged.setPos(mouse_event.scenePos() - self.m_drag_offset)
super(DiagramScene, self).mouseMoveEvent(mouse_event)
def mouseReleaseEvent(self, mouse_event):
if self.line and self.my_mode == self.InsertLine:
start_items = self.items(self.line.line().p1())
if len(start_items) and start_items[0] == self.line:
start_items.pop(0)
end_items = self.items(self.line.line().p2())
if len(end_items) and end_items[0] == self.line:
end_items.pop(0)
self.removeItem(self.line)
self.line = None
if len(start_items) and len(end_items) and isinstance(start_items[0], FlumeDiagramItem) and \
isinstance(end_items[0], FlumeDiagramItem) and start_items[0] != end_items[0]:
start_item = start_items[0]
end_item = end_items[0]
self.add_arrow(start_item, end_item)
self.line = None
if self.m_dragged:
x = mouse_event.scenePos().x() # // 50 * 50
y = mouse_event.scenePos().y() # // 50 * 50
self.m_dragged.setPos(x, y)
self.m_dragged = None
self.my_mode = self.DefaultMode
super(DiagramScene, self).mouseReleaseEvent(mouse_event)
def add_arrow(self, start_item, end_item):
arrow = Arrow(start_item, end_item)
arrow.set_color(self.my_line_color)
start_item.add_arrow(arrow)
end_item.add_arrow(arrow)
arrow.setZValue(-1000.0)
self.addItem(arrow)
arrow.update_position()
def is_item_changed(self, new_type):
for item in self.selectedItems():
if isinstance(item, new_type):
return True
return False
示例6: TransitionGraphicsItem
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
class TransitionGraphicsItem(QGraphicsObject):
# constant values
SQUARE_SIDE = 10
ARROW_SIZE = 12
PEN_NORMAL_WIDTH = 1
PEN_FOCUS_WIDTH = 3
posChanged = pyqtSignal('QGraphicsItem')
def __init__(self, data):
super(QGraphicsObject, self).__init__()
self.transitionData = data
self.originLine = None
self.destinationLine = None
self.arrow = None
self.textGraphics = None
self.middleHandle = None
self.graphicsOrigin = self.transitionData.origin.getGraphicsItem()
self.graphicsDestination = self.transitionData.destination.getGraphicsItem()
# connect position changed event
self.graphicsOrigin.posChanged.connect(self.statePosChanged)
self.graphicsDestination.posChanged.connect(self.statePosChanged)
self.midPointX = (self.graphicsDestination.scenePos().x() + self.graphicsOrigin.scenePos().x()) / 2.0
self.midPointY = (self.graphicsDestination.scenePos().y() + self.graphicsOrigin.scenePos().y()) / 2.0
self.createOriginLine()
self.createDestinationLine()
self.createArrow()
self.createMiddleHandle()
self.createIdTextBox()
def statePosChanged(self, state):
if self.graphicsOrigin == state:
self.createOriginLine()
elif self.graphicsDestination == state:
self.createDestinationLine()
self.createArrow()
def createOriginLine(self):
if self.originLine == None:
self.originLine = QGraphicsLineItem(self.midPointX, self.midPointY, self.graphicsOrigin.scenePos().x(),
self.graphicsOrigin.scenePos().y(), self)
else:
self.originLine.setLine(QLineF(self.midPointX, self.midPointY, self.graphicsOrigin.scenePos().x(),
self.graphicsOrigin.scenePos().y()))
myLine = self.originLine.line()
myLine.setLength(myLine.length() - StateGraphicsItem.NODE_WIDTH / 2)
self.originLine.setLine(myLine)
def createDestinationLine(self):
if self.destinationLine == None:
self.destinationLine = QGraphicsLineItem(self.midPointX, self.midPointY, self.graphicsDestination.scenePos().x(),
self.graphicsDestination.scenePos().y(), self)
else:
self.destinationLine.setLine(QLineF(self.midPointX, self.midPointY, self.graphicsDestination.scenePos().x(),
self.graphicsDestination.scenePos().y()))
myLine = self.destinationLine.line()
myLine.setLength(myLine.length() - StateGraphicsItem.NODE_WIDTH / 2)
self.destinationLine.setLine(myLine)
def createArrow(self):
# add an arrow to destination line
myLine = self.destinationLine.line()
myLine.setLength(myLine.length() - TransitionGraphicsItem.ARROW_SIZE)
rotatePoint = myLine.p2() - self.destinationLine.line().p2()
rightPointX = rotatePoint.x() * math.cos(math.pi / 6) - rotatePoint.y() * math.sin(math.pi / 6)
rightPointY = rotatePoint.x() * math.sin(math.pi / 6) + rotatePoint.y() * math.cos(math.pi / 6)
rightPoint = QPointF(rightPointX + self.destinationLine.line().x2(),
rightPointY + self.destinationLine.line().y2())
leftPointX = rotatePoint.x() * math.cos(-math.pi / 6) - rotatePoint.y() * math.sin(-math.pi / 6)
leftPointY = rotatePoint.x() * math.sin(-math.pi / 6) + rotatePoint.y() * math.cos(-math.pi / 6)
leftPoint = QPointF(leftPointX + self.destinationLine.line().x2(),
leftPointY + self.destinationLine.line().y2())
polygon = QPolygonF()
polygon << rightPoint << leftPoint << self.destinationLine.line().p2() << rightPoint
if self.arrow == None:
self.arrow = QGraphicsPolygonItem(polygon, self)
else:
self.arrow.setPolygon(polygon)
brush = QBrush(Qt.SolidPattern)
brush.setColor(Qt.black)
self.arrow.setBrush(brush)
def createMiddleHandle(self):
# create middle handle
if self.middleHandle == None:
self.middleHandle = RectHandleGraphicsItem(TransitionGraphicsItem.SQUARE_SIDE, self)
self.middleHandle.setFlag(QGraphicsItem.ItemIsMovable)
#.........这里部分代码省略.........
示例7: AnalogClock
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
class AnalogClock(Desklet):
def __init__(self):
super().__init__()
self.center_x = 0
self.center_y = 0
self.radius = 1
self.now = datetime.utcfromtimestamp(0)
# build the clock face
self.circle = QGraphicsEllipseItem(self.root)
self.lines = []
for _ in range(0, 60):
self.lines.append(QGraphicsLineItem(self.root))
self.hours_hand = QGraphicsLineItem(self.root)
self.minutes_hand = QGraphicsLineItem(self.root)
self.seconds_hand = QGraphicsLineItem(self.root)
self.hand_circle = QGraphicsEllipseItem(self.root)
def set_style(self, style):
super().set_style(style)
# minute
pen = QPen(self.style.foreground_color)
pen.setWidth(12)
pen.setCapStyle(Qt.RoundCap)
self.minutes_hand.setPen(pen)
# hour
pen = QPen(self.style.foreground_color)
pen.setWidth(16)
pen.setCapStyle(Qt.RoundCap)
self.hours_hand.setPen(pen)
# second
pen = QPen(self.style.midcolor)
pen.setWidth(4)
pen.setCapStyle(Qt.RoundCap)
self.seconds_hand.setPen(pen)
# outer circle
pen = QPen(self.style.foreground_color)
pen.setWidth(6)
self.circle.setPen(pen)
# inner circle
self.hand_circle.setBrush(QBrush(self.style.background_color))
# minute lines
pen = QPen()
pen.setCapStyle(Qt.RoundCap)
pen.setColor(self.style.midcolor)
pen.setWidth(4)
bold_pen = QPen()
bold_pen.setCapStyle(Qt.RoundCap)
bold_pen.setColor(self.style.foreground_color)
bold_pen.setWidth(6)
for i, line in enumerate(self.lines):
if i % 5 == 0:
line.setPen(bold_pen)
else:
line.setPen(pen)
self.layout()
def set_rect(self, rect):
super().set_rect(rect)
self.layout()
def layout(self):
self.center_x = self.rect.left() + self.rect.width() / 2.0
self.center_y = self.rect.top() + self.rect.height() / 2.0
self.radius = min(self.rect.width(), self.rect.height()) / 2.0 - 3.0
self.circle.setRect(self.center_x - self.radius,
self.center_y - self.radius,
2 * self.radius,
2 * self.radius)
self.hand_circle.setRect(self.center_x - 5,
self.center_y - 5,
10, 10)
for i, line in enumerate(self.lines):
angle = i * 2.0 * math.pi / 60.0
if i % 5 == 0:
line.setLine(self.center_x + math.cos(angle) * self.radius * 0.85,
self.center_y + math.sin(angle) * self.radius * 0.85,
self.center_x + math.cos(angle) * self.radius * 0.95,
self.center_y + math.sin(angle) * self.radius * 0.95)
else:
line.setLine(self.center_x + math.cos(angle) * self.radius * 0.90,
self.center_y + math.sin(angle) * self.radius * 0.90,
self.center_x + math.cos(angle) * self.radius * 0.95,
#.........这里部分代码省略.........
示例8: BaseGraphic
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
class BaseGraphic(object):
def __init__(self, *args):
super(BaseGraphic, self).__init__()
self.label = args[3]
self.parent = args[0]
self.section_analyzer = self.parent.section_analyzer
self.width = None
self.height = None
self.margin = None
self.position = args[1], args[2]
self.content_width = None
self.content_height = None
self.distance_pointer = None
self.distance_label = None
self.section_num = len(self.section_analyzer.section_list)
self.section_distance = self.section_analyzer.section_distance
self.length_multiplier = 100.0
self.height_multiplier = 100.0
self.line_extend = 20
self.margin = 50
self.material_legend = MaterialLegend(self)
self._inited = False
self.items = []
self.add_title()
def add_title(self):
if self.label:
title = QGraphicsSimpleTextItem(self.label)
title.setPos(self.position[0] + self.margin, self.position[1] + self.line_extend)
self.addToGroup(title)
def addToGroup(self, item):
self.items.append(item)
def create_distance_pointer(self):
self.distance_pointer = QGraphicsLineItem()
pen = QPen()
pen.setWidthF(1.0)
pen.setStyle(Qt.DashDotLine)
color = Color.create_qcolor_from_rgb_tuple_f((1,0,0))
pen.setColor(color)
self.distance_pointer.setPen(pen)
self.distance_pointer.setZValue(1.0)
self.addToGroup(self.distance_pointer)
self.distance_label = QGraphicsSimpleTextItem()
self.distance_label.setZValue(1.0)
self.addToGroup(self.distance_label)
def init_dimension(self):
section_num = len(self.section_analyzer.section_list)
section_distance = self.section_analyzer.section_distance
self.content_width = section_num * section_distance * self.length_multiplier
self.create_distance_pointer()
self._inited = True
def update_graph_size(self):
if self.content_height and self.content_width:
self.width = self.content_width + self.margin * 2
self.height = self.content_height + self.margin * 2
# bounding_rect.setWidth(self.width)
# bounding_rect.setHeight(self.height)
def set_distance_pointer(self, distance):
if self._inited:
x1 = self.position[0] + self.margin + distance * self.length_multiplier
y1 = self.position[1]
x2 = x1
y2 = y1 + self.height
self.distance_pointer.setLine(x1, y1, x2, y2)
self.distance_label.setText("%.2f" % distance)
self.distance_label.setPos(x2,y2)
pass
@staticmethod
def set_rect_fill(*args):
if args[0] == 0: #surface color mode
rect = args[1]
color = args[2]
qcolor = Color.create_qcolor_from_rgb_tuple_f(color)
brush = QBrush(qcolor)
rect.setBrush(brush)
def create_legend(self):
x = self.position[0] + self.width
y = self.position[1]
self.material_legend.create_material_legend(x, y)
for item in self.material_legend.graphic_items:
self.addToGroup(item)
示例9: CalendarDesklet
# 需要导入模块: from PyQt5.QtWidgets import QGraphicsLineItem [as 别名]
# 或者: from PyQt5.QtWidgets.QGraphicsLineItem import setLine [as 别名]
class CalendarDesklet(Desklet):
def __init__(self):
super().__init__()
self.model = CalendarModel()
self.cursor_pos = None
self.cursor = QGraphicsRectItem(self.root)
self.header = QGraphicsSimpleTextItem(self.root)
self.weekdays = []
days = ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"]
for day in days:
self.weekdays.append(QGraphicsSimpleTextItem(day, self.root))
self.header_line = QGraphicsLineItem(self.root)
self.days = []
for _ in range(0, 6 * 7):
self.days.append(QGraphicsSimpleTextItem(self.root))
def next_month(self):
self.model.next_month()
self.layout()
def previous_month(self):
self.model.previous_month()
self.layout()
def set_rect(self, rect):
super().set_rect(rect)
self.layout()
def set_style(self, style):
super().set_style(style)
font = QFont(style.font)
font.setPixelSize(48)
self.header.setBrush(style.midcolor)
self.header.setFont(font)
font = QFont(style.font)
font.setPixelSize(32)
self.header_line.setPen(style.foreground_color)
self.cursor.setBrush(style.midcolor)
self.cursor.setPen(QPen(Qt.NoPen))
for widget in self.weekdays:
widget.setFont(font)
widget.setBrush(style.foreground_color)
for widget in self.days:
widget.setFont(font)
widget.setBrush(self.style.foreground_color)
self.layout()
def layout(self):
cell_width = (self.rect.width()) / 7.0
cell_height = (self.rect.height() - 64) / 7.0
x = self.rect.left()
y = self.rect.top()
fm = QFontMetrics(self.header.font())
rect = fm.boundingRect(self.header.text())
self.header.setPos(x + self.rect.width() / 2 - rect.width() / 2,
y)
y += fm.height()
for row, day in enumerate(self.weekdays):
fm = QFontMetrics(day.font())
rect = fm.boundingRect(day.text())
day.setPos(x + row * cell_width + cell_width / 2 - rect.width() / 2,
y)
y += fm.height()
self.header_line.setLine(x, y,
x + self.rect.width() - 3, y)
y += 8
for n, widget in enumerate(self.days):
col = n % 7
row = n // 7
rect = fm.boundingRect(widget.text())
widget.setPos(x + col * cell_width + cell_width / 2 - rect.width() / 2,
y + row * cell_height + cell_height / 2 - fm.height() / 2)
# if day.month != self.now.month:
# widget.setBrush(self.style.midcolor)
# else:
if self.cursor_pos is not None:
#.........这里部分代码省略.........