使用PyQwt通过鼠标从画布记录曲线/多边形

时间:2013-08-13 12:20:02

标签: python qt qwt

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

现在我的代码看起来像这样:

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分。第一次点击鼠标的点与第二次点击鼠标点之间的straigt线的起点和终点。

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

1 个答案:

答案 0 :(得分: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()))