记录python+pyside+qml+qtcharts 使用,防踩坑

news/2024/12/26 18:20:58/文章来源:https://www.cnblogs.com/lijun-goods/p/18633930

使用QML-qtquick 进行开发时,有个使用chart图表的需求,看了一大圈,网上都是qmake或是cmake来构建QTchart,用python开发也只搜到QtWidgets模块进行图表绘制。然而我对qtwidgets不是很了解,想要的是QML开发,在使用ChartView{}时一直闪退,没有效果。经历了苦苦搜寻,终于在 https://stackoverflow.com/questions/57536401/how-to-add-qml-scatterseries-to-existing-qml-defined-chartview/57541374#57541374 这个文章下搜寻到我想要的了。

python文件

import sys
from PySide6 import  QtWidgets, QtQmlif __name__ == "__main__":#一定要使用QtWidgets#app = QGuiApplication().instance()app = QtWidgets.QApplication(sys.argv)engine = QtQml.QQmlApplicationEngine()engine.load("main.qml")if not engine.rootObjects():sys.exit(-1)sys.exit(app.exec())

main.qml

import QtQuick
import QtQuick.Controls
import QtChartsApplicationWindow {visible: truewidth: 640height: 480Rectangle{width:640height:80anchors.top:parent.topcolor:"pink"Text{anchors.centerIn:parenttext:'折线图'}}Rectangle {width:640height:400anchors.bottom:parent.bottomChartView {title: "Line Chart"anchors.fill: parentantialiasing: trueLineSeries {name: "Line"XYPoint { x: 0; y: 0 }XYPoint { x: 1.1; y: 2.1 }XYPoint { x: 1.9; y: 3.3 }XYPoint { x: 2.1; y: 2.1 }XYPoint { x: 2.9; y: 4.9 }XYPoint { x: 3.4; y: 3.0 }XYPoint { x: 4.1; y: 3.3 }}}}
}

image

这样就能愉快的使ChartView{}绘制图表了
官网例子:https://doc.qt.io/qt-6/qtcharts-qmlchartsgallery-example.html

下面是图表与python数据交互
折线图
python

import sys
import random
from PySide6 import QtCore,QtWidgets, QtQml, QtChartsclass DataModel(QtCore.QObject):@QtCore.Slot(QtCharts.QAbstractSeries)def fill_serie(self, serie):for x in range(10):  # 10 个数据点y = random.randint(0, 100)  # 随机 y 值serie.append(x, y)  # 添加数据点if __name__ == "__main__":app = QtWidgets.QApplication(sys.argv)engine = QtQml.QQmlApplicationEngine()data_model = DataModel()engine.rootContext().setContextProperty("dataModel", data_model)engine.load("main.qml")if not engine.rootObjects():sys.exit(-1)sys.exit(app.exec())

main.qml

import QtQuick
import QtQuick.Controls
import QtChartsApplicationWindow {visible: truewidth: 640height: 480Rectangle{width:640height:80anchors.top:parent.topcolor:"pink"Text{anchors.centerIn:parenttext:'折线图'}}Rectangle {width:640height:400anchors.bottom:parent.bottomChartView {anchors.fill: parentid: chartView// 定义 X 轴和 Y 轴ValueAxis {id: xAxismin: 0max: 10}ValueAxis {id: yAxismin: 0max: 100}Component.onCompleted: {// 创建折线图系列var serie = chartView.createSeries(ChartView.SeriesTypeLine, "line series", xAxis, yAxis);// 填充数据dataModel.fill_serie(serie);}}}
}

持续刷新可以加个定时器。Timer

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/859387.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

制作了一款 pdf 转换图片的工具( csharp 版 )

在 Windsurf 的帮助下,制作了一款 windows 下的 pdf 转换图片(png/jpg/tif)工具。支持递归查找 pdf,一些配置给写死了,适合简单使用。 PDF 批量转图片工具 这是一个功能强大且易用的 PDF 转图片工具,专为批量处理 PDF 文件设计。它能够将 PDF 文件的每一页转换为高质量的…

C# WPF PrintDialog 打印(1)

参考“WPF 打印实例”的文章:https://www.cnblogs.com/gnielee/archive/2010/07/02/wpf-print-sample.html 测试程序: 首先打印Canvas效果:看起来似乎没问题,但是调整窗体尺寸遮挡部分元素:再打印Canvas效果:可以发现PrintVisual方法只打印了可见部分的元素,测试打印Dat…

CentOS8安装

安装方法跟Centos7无差异。 一、下载安装包镜像地址:https://mirrors.aliyun.com/centos-vault/centos/8.2.2004/isos/x86_64/?spm=a2c6h.25603864.0.0.1f647af6cvFFgO 二、安装操作系统 安装界面如下, 三、后续工作a、配置ip地址 [root@localhost ~]# cat /etc/sysconfi…

某视频tv app 签名算法分析

一、基本信息 分析工具:objection、frida 二、加解密分析 通过抓包发现请求体里有签名校验 sign ,并且响应体里返回的数据是密文,所以本次的目标就是破解签名 sign 以及响应包加密算法。2.1 请求签名 sign 从 sign 的数值长度上判断可能是 MD5,先使用 objection hook java.…

Metal RT压缩

iOS设备的屏幕分辨率越来越高,渲染时需要的RT的分辨率和内存的开销都更高了。苹果官方在2021年发布的A15 Bonic芯片中支持了RT的lossy压缩,可以减少50%的内存footprint。 MetalRT压缩是什么? Apple在2018年就已经提供了RT的lossless压缩方案,可以节省带宽,从而降低功耗。在…

百度地图轨迹绘制以及轨迹回放以及鼠标滑过自定义样式

用百度地图的绘制轨迹以及相关的轨迹回放,鼠标滑过展示与否的自定义弹窗的整理 图片展示组件代码:<!--* @Author: menxiaojin* @Date: 2023-07-12 14:03:03* @LastEditors: menxiaojin* @LastEditTime: 2023-07-20 19:41:02 --> <!--首页地图组件--> <templat…

【护网】IP WhitePass:IP过滤,白名单过滤,用于护网CDN、负载地址过滤等;

免责声明 由于传播、利用本公众号夜组安全所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,公众号夜组安全及作者不为此承担任何责任,一旦造成后果请自行承担!如有侵权烦请告知,我们会立即删除并致歉。谢谢!所有工具安全性自测!!!工具介绍 在护…

async/await 异步连接通讯设备

1. 在项目中遇到,获取上下两把扫码枪的结果,但是只有其中一把扫码枪能扫码,因为码可能在上面也可能在下面2. 起初我是用的同步的方法,先使用下面的扫码枪,再使用上面的扫码枪,扫码枪扫描超时为1秒,但是这样的缺点就是会浪费一把扫码枪扫描的时间3. 为了节约时间,将方法…

智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型

在现代数字世界中,图形用户界面(GUI)是人机交互的核心。然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社区中,越来越多的研究者和开发者们开始关注VLM-based GUI Agent。2023年12月,…

会话相关的常用查询

ORACLE常用的与会话相关的查询 目录ORACLE常用的与会话相关的查询查看当前锁的信息:查看当前正在执行的sqlORACLE的监听日志(listener.log)Listener log locationFor oracle 9i/10gFor oracle 11g/12c或者通过 lsnrctl status 也可以查看位置或者11g可以通过 adrci 命令List…