是否可以在pyqtgraph中调整句柄的大小?
Posted
技术标签:
【中文标题】是否可以在pyqtgraph中调整句柄的大小?【英文标题】:Is it possible to adapt the size of the handle in pyqtgraph? 【发布时间】:2020-10-26 13:37:12 【问题描述】:我有一个来自pyqtgraph
的PolyLineROI
对象,但是用鼠标敲击手柄非常困难。
是否可以调整 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
【问题讨论】:
【参考方案1】:句柄大小在任何 ROI 子类的 __init__
中设置,但您可以将 PolyLineROI 子类化,覆盖其 addHandle
方法,在那里设置句柄大小,然后调用基本实现。
class BigHandlesPolyLine(pg.PolyLineROI):
def addHandle(self, *args, **kwargs):
self.handleSize = 10
super(BigHandlesPolyLine, self).addHandle(*args, **kwargs)
【讨论】:
太棒了——非常感谢!我想知道为什么这不能直接编辑。这应该是每个使用它的人都会遇到的问题。 好的,不幸的是,当我尝试通过单击绘图添加新手柄时,它现在崩溃了,我并没有真正理解为什么。 @Meredith 我建议您使用minimal, reproducible example 更新您的问题,甚至包括我的答案。以上是关于是否可以在pyqtgraph中调整句柄的大小?的主要内容,如果未能解决你的问题,请参考以下文章