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

Posted

技术标签:

【中文标题】是否可以在pyqtgraph中调整句柄的大小?【英文标题】:Is it possible to adapt the size of the handle in pyqtgraph? 【发布时间】:2020-10-26 13:37:12 【问题描述】:

我有一个来自pyqtgraphPolyLineROI 对象,但是用鼠标敲击手柄非常困难。 是否可以调整 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中调整句柄的大小?的主要内容,如果未能解决你的问题,请参考以下文章

pyqtgraph 中窗口的最小化调整了包含对象的大小,但它应该只显示图形的较小范围

如何使用子窗口中的句柄获取父窗口的调整大小事件?

真正从 <textarea> 中删除调整大小句柄

在 Safari 中隐藏 textarea 调整大小句柄

在 Safari 中隐藏 textarea 调整大小句柄

JQuery UI:如何将调整大小句柄放置在容器中的其他位置?