Python操作qml对象过程详解
Python  /  管理员 发布于 7年前   255
1. 如何在python里获得qml里的对象?
1.1 获取根对象
QML:
import QtQuick 2.12import QtQuick.Controls 2.12ApplicationWindow { id: window width: 250 height: 500 visible: true // ...}
Python:
使用QQmlApplicationEngine类的rootObjects方法,返回的是一个列表,取索引0即是根对象。
engine = QQmlApplicationEngine()engine.load('qml-test.qml')root_obj = engine.rootObjects()[0]
这样就会获得id为window的ApplicationWindow对象。
1.2 获取任意对象
需要在qml文件中加入objecName属性!
QML:
import QtQuick 2.12import QtQuick.Controls 2.12ApplicationWindow { id: window width: 250 height: 500 visible: true Text { id: txt objectName: "txt" text: "Click Me" font.pixelSize: 20 anchors.centerIn: parent }}
Python:
engine = QQmlApplicationEngine()engine.load('qml-test.qml')txt_obj = engine.rootObjects()[0].findChild(QObject, "txt")
2. 如何在python里读取和设置qml对象的属性和值?
2.1 读取对象的属性(如Text对象)
首先通过 findChild 获取Text对象(注意 txt 是qml文件里的 objectName):
txt_obj = engine.rootObjects()[0].findChild(QObject, "txt")
然后获取Text对象的text属性(使用 property):
txt_value = txt_obj.property("text")
2.2 设置对象的属性
使用setProperty方法可以更改对象的属性值。
txt_obj.setProperty("text", "Clicked!")
完整代码:
import sysfrom PyQt5.QtCore import QObjectfrom PyQt5.QtGui import QGuiApplicationfrom PyQt5.QtQml import QQmlApplicationEngineapp = QGuiApplication(sys.argv)engine = QQmlApplicationEngine()engine.load('qml-test.qml')# 根对象root_obj = engine.rootObjects()[0]# Text对象txt_obj = engine.rootObjects()[0].findChild(QObject, "txt")# 读取属性值txt_value = txt_obj.property("text")# 设置属性值txt_obj.setProperty("text", "Clicked!")sys.exit(app.exec())
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号