使用 PyQt 将基于 qml 的图表集成到现有的 ui
Posted
技术标签:
【中文标题】使用 PyQt 将基于 qml 的图表集成到现有的 ui【英文标题】:Using PyQt to integrate a qml based Chart to an existing ui 【发布时间】:2017-01-12 15:15:43 【问题描述】:我正在使用 PyQt,其中包含旧版应用程序。在这个基于 UI 的应用程序中,我想添加在 qml 中定义的实时图表(比如使用 QtCharts)。我能够使用 QtQuick 2.0 和 QtQuick.Controls 加载基本的 qml 文件。但我无法使用 QtCharts 导入 qml 文件。
有没有其他更好的方法可以在 PyQt 应用程序上使用 qml 有效地绘制实时图形?
【问题讨论】:
【参考方案1】:QtChart 解决方案(参考 creator 示例 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)
【讨论】:
以上是关于使用 PyQt 将基于 qml 的图表集成到现有的 ui的主要内容,如果未能解决你的问题,请参考以下文章
使用刀片将 Angular5 集成到现有的 Laravel 项目中
PyQt5 和 QML 集成问题,“findChild”返回 AttributeError