是否可以在pyqtgraph中调整手柄的大小?

问题描述 投票:0回答:2

我有一个来自

PolyLineROI
pyqtgraph
对象,但用鼠标击中手柄非常困难。 是否可以调整 ROI 手柄的大小以使其更易于使用?

更新:

正如 musicamente 的答案中所建议的,我尝试对

PolyLineROI
进行子类化,它对于较大的手柄工作正常,但在通过单击绘图添加新手柄时会崩溃。

最小示例:

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import numpy as np
import pyqtgraph as pg


class BigHandlesPolyLine(pg.PolyLineROI):
    """Subclass of pyqtgraph.PolyLineROI, overriding addHandle with a bigger handle size"""
    def addHandle(self, *args, **kwargs):
        self.handleSize = 20
        super(BigHandlesPolyLine, self).addHandle(*args, **kwargs)


app = pg.mkQApp()  # create app instance

# create default values
xn = np.linspace(0, 2 * np.pi, 20, dtype=float)
yn = np.sinc(xn)
data = zip(xn, yn)

# polyline = pg.PolyLineROI(data)  # works fine
polyline = BigHandlesPolyLine(data)  # crashes when adding handles manually while executing

pg.plot().addItem(polyline)  # add polyline to a plot

exit(app.exec())  # execute app
python-3.x pyqt5 pyqtgraph
2个回答
3
投票

句柄大小在任何 ROI 子类的

__init__
中设置,但您可以子类化 PolyLineROI,覆盖其
addHandle
方法,在那里设置句柄大小,然后调用基本实现。

class BigHandlesPolyLine(pg.PolyLineROI):
    def addHandle(self, *args, **kwargs):
        self.handleSize = 10
        super(BigHandlesPolyLine, self).addHandle(*args, **kwargs)

0
投票

看看这段对话。您只需执行以下操作:

for handle in roi.getHandles():
    handle.radius = 10
    handle.buildPath()
    handle.update()
© www.soinside.com 2019 - 2024. All rights reserved.