我有一个来自
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
句柄大小在任何 ROI 子类的
__init__
中设置,但您可以子类化 PolyLineROI,覆盖其 addHandle
方法,在那里设置句柄大小,然后调用基本实现。
class BigHandlesPolyLine(pg.PolyLineROI):
def addHandle(self, *args, **kwargs):
self.handleSize = 10
super(BigHandlesPolyLine, self).addHandle(*args, **kwargs)
看看这段对话。您只需执行以下操作:
for handle in roi.getHandles():
handle.radius = 10
handle.buildPath()
handle.update()