0

我试图让用户通过鼠标单击并释放在我的绘图画布上绘制一条曲线,以在释放鼠标后发出信号并将点数组发送到另一种方法以进行进一步处理。

现在我的代码如下所示:

self.plotPicker = Qwt.QwtPlotPicker(Qwt.QwtPlot.xBottom, Qwt.QwtPlot.yLeft, Qwt.QwtPicker.PolygonSelection, Qwt.QwtPlotPicker.PolygonRubberBand, Qwt.QwtPicker.AlwaysOn, plot.canvas())
self.plotPicker.setRubberBandPen(QPen(Qt.green))
self.plotPicker.setTrackerPen(QPen(Qt.cyan))
self.connect(self.plotPicker, SIGNAL('selected(const QwtPolygon&)'), self.onDrawing)

问题是,QwtPolygon发送到onDrawing方法只得到 2 分。第一次单击鼠标的点与第二次单击鼠标的点之间的直线的起点和终点。

是否可以通过 Qwt 中的方法(v.5,由于 python 使用)记录任意形状和多边形?

4

1 回答 1

0

好的,我通过重载解决了这个问题QwtPlotPicker,记录了所有返回的坐标,trackerText然后进行了一些采样。看起来像这样:

def trackerText(self, point):

    if _record:
        self.recording = True
        pos = self.invTransform(point)  
        if(len(self.recorded_data)):
            if(eucliddist((pos.x(), pos.y()), self.recorded_data[-1]) > 0.0):
                self.recorded_data.append((pos.x(), pos.y()))
        else:
            self.recorded_data.append((pos.x(), pos.y()))            
于 2013-08-20T12:19:44.540 回答