Python qtpy.QtCore.QPointF() Examples
The following are 23
code examples of qtpy.QtCore.QPointF().
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example.
You may also want to check out all available functions/classes of the module
qtpy.QtCore
, or try the search function
.
Example #1
Source File: node.py From pyflowgraph with BSD 3-Clause "New" or "Revised" License | 6 votes |
def mouseMoveEvent(self, event): if self.__dragging: newPos = self.mapToScene(event.pos()) graph = self.getGraph() if graph.getSnapToGrid() is True: gridSize = graph.getGridSize() newNodePos = newPos - self._mouseDelta snapPosX = math.floor(newNodePos.x() / gridSize) * gridSize; snapPosY = math.floor(newNodePos.y() / gridSize) * gridSize; snapPos = QtCore.QPointF(snapPosX, snapPosY) newPosOffset = snapPos - newNodePos newPos = newPos + newPosOffset delta = newPos - self._lastDragPoint self.__graph.moveSelectedNodes(delta) self._lastDragPoint = newPos self._nodesMoved = True else: super(Node, self).mouseMoveEvent(event)
Example #2
Source File: bigGraph.py From pyflowgraph with BSD 3-Clause "New" or "Revised" License | 6 votes |
def generateNodes(count, offset, depth): for i in range(count): node1 = Node(graph, 'node' + str(depth) + str(i)) node1.addPort(InputPort(node1, graph, 'InPort', QtGui.QColor(128, 170, 170, 255), 'MyDataX')) node1.addPort(OutputPort(node1, graph, 'OutPort', QtGui.QColor(32, 255, 32, 255), 'MyDataX')) node1.setGraphPos(QtCore.QPointF(offset, i * 80 )) graph.addNode(node1) global totalCount totalCount += 1 if depth < 6: generateNodes( count * 2, offset+160, depth+1) for i in range(count): graph.connectPorts('node' + str(depth) + str(i), 'OutPort', 'node' + str(depth+1) + str(i*2), 'InPort') graph.connectPorts('node' + str(depth) + str(i), 'OutPort', 'node' + str(depth+1) + str(i*2+1), 'InPort') elif depth < 12: generateNodes( int(count / 2), offset+160, depth+1) for i in range(count//2): graph.connectPorts('node' + str(depth) + str(i), 'OutPort', 'node' + str(depth+1) + str(int(i)), 'InPort')
Example #3
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 6 votes |
def draw_curve(self, path: Sequence[_Coord]) -> None: """Draw path as curve.""" if len(set(path)) < 2: return painter_path = QPainterPath() error = False for i, (x, y) in enumerate(path): if isnan(x): error = True self.painter.drawPath(painter_path) painter_path = QPainterPath() else: p = QPointF(x, -y) * self.zoom if i == 0: painter_path.moveTo(p) self.draw_circle(p, 2) continue if error: painter_path.moveTo(p) error = False else: painter_path.lineTo(p) self.painter.drawPath(painter_path)
Example #4
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 6 votes |
def draw_ranges(self) -> None: """Draw rectangle ranges.""" pen = QPen() pen.setWidth(5) for i, (tag, rect) in enumerate(self.ranges.items()): range_color = QColor(color_num(i + 1)) range_color.setAlpha(30) self.painter.setBrush(range_color) range_color.setAlpha(255) pen.setColor(range_color) self.painter.setPen(pen) cx = rect.x() * self.zoom cy = rect.y() * -self.zoom if rect.width(): self.painter.drawRect(QRectF( QPointF(cx, cy), QSizeF(rect.width(), rect.height()) * self.zoom )) else: self.draw_circle(QPointF(cx, cy), 3) range_color.setAlpha(255) pen.setColor(range_color) self.painter.setPen(pen) self.painter.drawText(QPointF(cx, cy) + QPointF(6, -6), tag) self.painter.setBrush(Qt.NoBrush)
Example #5
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def __init__(self, parent: QWidget): """Set the parameters for drawing.""" super(BaseCanvas, self).__init__(parent) self.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding) self.setFocusPolicy(Qt.StrongFocus) self.setMouseTracking(True) self.painter = QPainter() # Origin coordinate self.ox = self.width() / 2 self.oy = self.height() / 2 # Canvas zoom rate self.zoom = 1. # Joint size self.joint_size = 5 # Canvas line width self.link_width = 3 self.path_width = 3 # Font size self.font_size = 15 # Show point mark or dimension self.show_ticks = _TickMark.SHOW self.show_point_mark = True self.show_dimension = True # Path track self.path = _PathOption() # Path solving self.ranges = {} self.target_path = {} self.show_target_path = False # Background self.background = QImage() self.background_opacity = 1. self.background_scale = 1. self.background_offset = QPointF(0, 0) # Monochrome mode self.monochrome = False # Grab mode self.__grab_mode = False
Example #6
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def update_ranges(self, ranges: Mapping[str, Tuple[float, float, float]]) -> None: """Update the ranges of dimensional synthesis.""" self.ranges.clear() self.ranges.update({tag: QRectF( QPointF(values[0] - values[2], values[1] + values[2]), QSizeF(values[2], values[2]) * 2 ) for tag, values in ranges.items()}) self.update()
Example #7
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def set_zoom(self, zoom: int) -> None: """Update zoom factor.""" zoom_old = self.zoom self.zoom = zoom / 50. zoom_old -= self.zoom if self.zoomby == ZoomBy.CANVAS: pos = self.mapFromGlobal(QCursor.pos()) else: pos = QPointF(self.width() / 2, self.height() / 2) self.ox += (pos.x() - self.ox) / self.zoom * zoom_old self.oy += (pos.y() - self.oy) / self.zoom * zoom_old self.update()
Example #8
Source File: canvas_base.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def __draw_frame(self) -> None: """Draw a external frame.""" pos_x = self.width() - self.ox pos_y = -self.oy neg_x = -self.ox neg_y = self.height() - self.oy self.painter.drawLine(QPointF(neg_x, pos_y), QPointF(pos_x, pos_y)) self.painter.drawLine(QPointF(neg_x, neg_y), QPointF(pos_x, neg_y)) self.painter.drawLine(QPointF(neg_x, pos_y), QPointF(neg_x, neg_y)) self.painter.drawLine(QPointF(pos_x, pos_y), QPointF(pos_x, neg_y))
Example #9
Source File: canvas_base.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def to_rect(self, zoom: float) -> QRectF: """Return limit as QRectF type.""" return QRectF( QPointF(self.x, -self.y) * zoom, QPointF(self.sx, -self.sy) * zoom )
Example #10
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def draw_dot(self, path: Sequence[_Coord]) -> None: """Draw path as dots.""" if len(set(path)) < 2: return for i, (x, y) in enumerate(path): if isnan(x): continue p = QPointF(x, -y) * self.zoom if i == 0: self.draw_circle(p, 2) else: self.painter.drawPoint(p)
Example #11
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def draw_target_path(self) -> None: """Draw solving path.""" pen = QPen() pen.setWidth(self.path_width) for i, n in enumerate(sorted(self.target_path)): path = self.target_path[n] if self.monochrome: line, dot = target_path_style(0) else: line, dot = target_path_style(i + 1) pen.setColor(line) self.painter.setPen(pen) if len(path) == 1: x, y = path[0] p = QPointF(x, -y) * self.zoom self.painter.drawText(p + QPointF(6, -6), f"P{n}") pen.setColor(dot) self.painter.setPen(pen) self.draw_circle(p, self.joint_size) else: painter_path = QPainterPath() for j, (x, y) in enumerate(path): p = QPointF(x, -y) * self.zoom self.draw_circle(p, self.joint_size) if j == 0: self.painter.drawText(p + QPointF(6, -6), f"P{n}") painter_path.moveTo(p) else: xb, yb = path[j - 1] self.draw_arrow(xb, yb, x, y, line=False) painter_path.lineTo(p) pen.setColor(line) self.painter.setPen(pen) self.painter.drawPath(painter_path) for x, y in path: pen.setColor(dot) self.painter.setPen(pen) self.draw_circle(QPointF(x, -y) * self.zoom, self.joint_size) self.painter.setBrush(Qt.NoBrush)
Example #12
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def draw_circle(self, p: QPointF, r: float) -> None: """Draw circle.""" self.painter.drawEllipse(p, r, r)
Example #13
Source File: connection.py From pyflowgraph with BSD 3-Clause "New" or "Revised" License | 5 votes |
def paint(self, painter, option, widget): srcPoint = self.mapFromScene(self.__srcPortCircle.centerInSceneCoords()) dstPoint = self.mapFromScene(self.__dstPortCircle.centerInSceneCoords()) dist_between = dstPoint - srcPoint self.__path = QtGui.QPainterPath() self.__path.moveTo(srcPoint) self.__path.cubicTo( srcPoint + QtCore.QPointF(dist_between.x() * 0.4, 0), dstPoint - QtCore.QPointF(dist_between.x() * 0.4, 0), dstPoint ) self.setPath(self.__path) super(Connection, self).paint(painter, option, widget)
Example #14
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def convex_hull(points, *, as_qpoint=False): """Returns points on convex hull in counterclockwise order according to Graham's scan algorithm. """ def cmp(a: float, b: float) -> int: return int(a > b) - int(a < b) def turn(p: _Coord, q: _Coord, r: _Coord) -> int: px, py = p qx, qy = q rx, ry = r return cmp((qx - px) * (ry - py) - (rx - px) * (qy - py), 0) def keep_left(hull: List[_Coord], r: _Coord) -> List[_Coord]: while len(hull) > 1 and turn(hull[-2], hull[-1], r) != 1: hull.pop() if not hull or hull[-1] != r: hull.append(r) return hull points.sort() lower = reduce(keep_left, points, []) upper = reduce(keep_left, reversed(points), []) lower.extend(upper[i] for i in range(1, len(upper) - 1)) return [(QPointF(x, y) if as_qpoint else (x, y)) for x, y in lower]
Example #15
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 5 votes |
def convex_hull(points: List[_Coord], *, as_qpoint: bool) -> List[QPointF]: ...
Example #16
Source File: uiKLine.py From uiKLine with MIT License | 5 votes |
def generatePicture(self,data=None,redraw=False): """重新生成图形对象""" # 重画或者只更新最后一个K线 if redraw: self.pictures = [] elif self.pictures: self.pictures.pop() w = 0.4 bPen = self.bPen bBrush = self.bBrush rPen = self.rPen rBrush = self.rBrush self.low,self.high = (np.min(data['low']),np.max(data['high'])) if len(data)>0 else (0,1) npic = len(self.pictures) for (t, open0, close0, low0, high0) in data: if t >= npic: picture = QtGui.QPicture() p = QtGui.QPainter(picture) # 下跌蓝色(实心), 上涨红色(空心) pen,brush,pmin,pmax = (bPen,bBrush,close0,open0)\ if open0 > close0 else (rPen,rBrush,open0,close0) p.setPen(pen) p.setBrush(brush) # 画K线方块和上下影线 if open0 == close0: p.drawLine(QtCore.QPointF(t-w,open0), QtCore.QPointF(t+w, close0)) else: p.drawRect(QtCore.QRectF(t-w, open0, w*2, close0-open0)) if pmin > low0: p.drawLine(QtCore.QPointF(t,low0), QtCore.QPointF(t, pmin)) if high0 > pmax: p.drawLine(QtCore.QPointF(t,pmax), QtCore.QPointF(t, high0)) p.end() self.pictures.append(picture) # 手动重画 #----------------------------------------------------------------------
Example #17
Source File: uiKLine.py From uiKLine with MIT License | 5 votes |
def generatePicture(self,data=None,redraw=False): """重新生成图形对象""" # 重画或者只更新最后一个K线 if redraw: self.pictures = [] elif self.pictures: self.pictures.pop() w = 0.4 bPen = self.bPen bBrush = self.bBrush rPen = self.rPen rBrush = self.rBrush self.low,self.high = (np.min(data['low']),np.max(data['high'])) if len(data)>0 else (0,1) npic = len(self.pictures) for (t, open0, close0, low0, high0) in data: if t >= npic: picture = QtGui.QPicture() p = QtGui.QPainter(picture) # 下跌蓝色(实心), 上涨红色(空心) pen,brush,pmin,pmax = (bPen,bBrush,close0,open0)\ if open0 > close0 else (rPen,rBrush,open0,close0) p.setPen(pen) p.setBrush(brush) # 画K线方块和上下影线 if open0 == close0: p.drawLine(QtCore.QPointF(t-w,open0), QtCore.QPointF(t+w, close0)) else: p.drawRect(QtCore.QRectF(t-w, open0, w*2, close0-open0)) if pmin > low0: p.drawLine(QtCore.QPointF(t,low0), QtCore.QPointF(t, pmin)) if high0 > pmax: p.drawLine(QtCore.QPointF(t,pmax), QtCore.QPointF(t, high0)) p.end() self.pictures.append(picture) # 手动重画 #----------------------------------------------------------------------
Example #18
Source File: node.py From pyflowgraph with BSD 3-Clause "New" or "Revised" License | 5 votes |
def getGraphPos(self): transform = self.transform() size = self.size() return QtCore.QPointF(transform.dx()+(size.width()*0.5), transform.dy()+(size.height()*0.5))
Example #19
Source File: selection_rect.py From pyflowgraph with BSD 3-Clause "New" or "Revised" License | 5 votes |
def setDragPoint(self, dragPoint): topLeft = QtCore.QPointF(self.__mouseDownPos) bottomRight = QtCore.QPointF(dragPoint) if dragPoint.x() < self.__mouseDownPos.x(): topLeft.setX(dragPoint.x()) bottomRight.setX(self.__mouseDownPos.x()) if dragPoint.y() < self.__mouseDownPos.y(): topLeft.setY(dragPoint.y()) bottomRight.setY(self.__mouseDownPos.y()) self.setPos(topLeft) self.resize(bottomRight.x() - topLeft.x(), bottomRight.y() - topLeft.y())
Example #20
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 4 votes |
def paintEvent(self, event: QPaintEvent) -> None: """Using a QPainter under 'self', so just change QPen or QBrush before painting. """ if not self.__grab_mode: self.painter.begin(self) self.painter.fillRect(event.rect(), QBrush(Qt.white)) # Translation self.painter.translate(self.ox, self.oy) # Background if not self.background.isNull(): rect = self.background.rect() self.painter.setOpacity(self.background_opacity) self.painter.drawImage(QRectF( self.background_offset * self.zoom, QSizeF(rect.width(), rect.height()) * self.background_scale * self.zoom ), self.background, QRectF(rect)) self.painter.setOpacity(1) # Show frame pen = QPen(Qt.blue) pen.setWidth(1) self.painter.setPen(pen) self.painter.setFont(QFont("Arial", self.font_size)) # Draw origin lines if self.show_ticks not in {_TickMark.SHOW, _TickMark.SHOW_NUM}: return pen.setColor(Qt.gray) self.painter.setPen(pen) x_l = -self.ox x_r = self.width() - self.ox self.painter.drawLine(QPointF(x_l, 0), QPointF(x_r, 0)) y_t = self.height() - self.oy y_b = -self.oy self.painter.drawLine(QPointF(0, y_b), QPointF(0, y_t)) def indexing(v: float) -> int: """Draw tick.""" return int(v / self.zoom - v / self.zoom % 5) # Draw tick for x in range(indexing(x_l), indexing(x_r) + 1, 5): if x == 0: continue is_ten = x % 10 == 0 end = QPointF(x * self.zoom, -10 if is_ten else -5) self.painter.drawLine(QPointF(x, 0) * self.zoom, end) if self.show_ticks == _TickMark.SHOW_NUM and is_ten: self.painter.drawText(end + QPointF(0, 3), f"{x}") for y in range(indexing(y_b), indexing(y_t) + 1, 5): if y == 0: continue is_ten = y % 10 == 0 end = QPointF(10 if is_ten else 5, y * self.zoom) self.painter.drawLine(QPointF(0, y) * self.zoom, end) if self.show_ticks == _TickMark.SHOW_NUM and is_ten: self.painter.drawText(end + QPointF(3, 0), f"{-y}") # Please to call the "end" method when ending paint event.
Example #21
Source File: canvas.py From Pyslvs-UI with GNU Affero General Public License v3.0 | 4 votes |
def draw_arrow( self, x1: float, y1: float, x2: float, y2: float, *, zoom: bool = True, line: bool = True, text: str = '' ) -> None: """Base point -> Vector point""" if zoom: x1 *= self.zoom y1 *= self.zoom x2 *= self.zoom y2 *= self.zoom a = atan2(y1 - y2, x1 - x2) x2 = (x1 + x2) / 2 - 7.5 * cos(a) y2 = (y1 + y2) / 2 - 7.5 * sin(a) first_point = QPointF(x2, -y2) if line: self.painter.drawLine(x1, -y1, x2, -y2) self.painter.drawLine(first_point, QPointF( x2 + 15 * cos(a + radians(20)), -y2 - 15 * sin(a + radians(20)) )) self.painter.drawLine(first_point, QPointF( x2 + 15 * cos(a - radians(20)), -y2 - 15 * sin(a - radians(20)) )) if not text: return # Font font = self.painter.font() font_copy = QFont(font) font.setBold(True) font.setPointSize(font.pointSize() + 8) self.painter.setFont(font) # Color pen = self.painter.pen() color = pen.color() pen.setColor(color.darker()) self.painter.setPen(pen) self.painter.drawText(first_point, text) pen.setColor(color) self.painter.setPen(pen) self.painter.setFont(font_copy)
Example #22
Source File: uiKLine.py From vnpy_crypto with MIT License | 4 votes |
def generatePicture(self,data=None,redraw=False): """重新生成图形对象""" # 重画或者只更新最后一个K线 if redraw: self.pictures = [] elif self.pictures: self.pictures.pop() w = 0.4 bPen = self.bPen bBrush = self.bBrush rPen = self.rPen rBrush = self.rBrush low,high = (data[0]['low'],data[0]['high']) if len(data)>0 else (0,1) for (t, open0, close0, low0, high0) in data: # t 并不是时间,是序列 if t >= len(self.pictures): # 每一个K线创建一个picture picture = QtGui.QPicture() p = QtGui.QPainter(picture) low, high = (min(low, low0), max(high, high0)) # 下跌蓝色(实心), 上涨红色(空心) pen, brush, pmin, pmax = (bPen, bBrush, close0, open0)\ if open0 > close0 else (rPen, rBrush, open0, close0) p.setPen(pen) p.setBrush(brush) # 画K线方块和上下影线 if open0 == close0: p.drawLine(QtCore.QPointF(t-w,open0), QtCore.QPointF(t+w, close0)) else: p.drawRect(QtCore.QRectF(t-w, open0, w*2, close0-open0)) if pmin > low0: p.drawLine(QtCore.QPointF(t,low0), QtCore.QPointF(t, pmin)) if high0 > pmax: p.drawLine(QtCore.QPointF(t,pmax), QtCore.QPointF(t, high0)) p.end() # 添加到队列中 self.pictures.append(picture) # 更新所有K线的最高/最低 self.low,self.high = low,high # 手动重画 #----------------------------------------------------------------------
Example #23
Source File: uiKLine.py From uiKLine with MIT License | 4 votes |
def generatePicture(self,data=None,redraw=False): """重新生成图形对象""" # 重画或者只更新最后一个K线 if redraw: self.pictures = [] elif self.pictures: self.pictures.pop() w = 0.4 bPen = self.bPen bBrush = self.bBrush rPen = self.rPen rBrush = self.rBrush self.low,self.high = (np.min(data['low']),np.max(data['high'])) if len(data)>0 else (0,1) npic = len(self.pictures) for (t, open0, close0, low0, high0) in data: if t >= npic: picture = QtGui.QPicture() p = QtGui.QPainter(picture) # 下跌蓝色(实心), 上涨红色(空心) pen,brush,pmin,pmax = (bPen,bBrush,close0,open0)\ if open0 > close0 else (rPen,rBrush,open0,close0) if len(self.Now_Close)>0: pen,brush,pmin,pmax = (bPen,bBrush,close0,open0) \ if self.Now_Close[t] < self.Before_Close[t] else (rPen,rBrush,open0,close0) p.setPen(pen) p.setBrush(brush) # 画K线方块和上下影线 if open0 == close0: p.drawLine(QtCore.QPointF(t-w,open0), QtCore.QPointF(t+w, close0)) else: p.drawRect(QtCore.QRectF(t-w, open0, w*2, close0-open0)) if pmin > low0: p.drawLine(QtCore.QPointF(t,low0), QtCore.QPointF(t, pmin)) if high0 > pmax: p.drawLine(QtCore.QPointF(t,pmax), QtCore.QPointF(t, high0)) p.end() self.pictures.append(picture) # 手动重画 #----------------------------------------------------------------------