使用PyQt将基于qml的Chart集成到现有的ui中

时间:2017-01-12 15:15:43

标签: python graph qml pyqt5 qtchart

我正在使用PyQt并在其中包含遗留应用程序。在这个基于UI的应用程序中,我想添加在qml中定义的实时图形(比如使用QtCharts)。我可以用QtQuick 2.0和QtQuick.Controls加载一个基本的qml文件。但是我无法使用QtCharts导入qml文件。

还有其他更好的方法可以在PyQt应用程序上使用qml有效地绘制实时图吗?

1 个答案:

答案 0 :(得分:0)

QtChart解决方案(参考创建者示例qmloscilloscope)

在QML文件中使用QML LineSeries对象作为参数调用python函数。仅对LineSeries和ScatterSeries支持属性useOpenGL。其他系列,如BarSeries,效率低于这两个系列。

QML文件:

    LineSeries{
        id: lineSeries
        name: "signal"
        useOpenGL: true
        axisX: ValueAxis {
            id: axisX
            min: 0
            max: 10
        }
        axisY: ValueAxis {
            id: axisY
            min: 0
            max: 100
        }
    }
    Timer {
        interval: 1000/25
        running: true
        repeat: true
        onTriggered: modelSpectrum.update(lineSeries)
    }

Python文件:

...
@pyqtSlot(QObject)
def update(self, series):
    series.clear()
    for i in range(10):
        series.append(i, random.random()*100)