1. 如何在python里获得qml里的对象?
1.1 获取根对象
QML:
import QtQuick 2.12
import QtQuick.Controls 2.12
ApplicationWindow {
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.12
import QtQuick.Controls 2.12
ApplicationWindow {
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 sys
from PyQt5.QtCore import QObject
from PyQt5.QtGui import QGuiApplication
from PyQt5.QtQml import QQmlApplicationEngine
app = 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())
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
标签:
python,操作,qml
免责声明:本站文章均来自网站采集或用户投稿,网站不提供任何软件下载或自行开发的软件!
如有用户或公司发现本站内容信息存在侵权行为,请邮件告知! 858582#qq.com
桃源资源网 Design By www.nqtax.com
暂无“Python操作qml对象过程详解”评论...
RTX 5090要首发 性能要翻倍!三星展示GDDR7显存
三星在GTC上展示了专为下一代游戏GPU设计的GDDR7内存。
首次推出的GDDR7内存模块密度为16GB,每个模块容量为2GB。其速度预设为32 Gbps(PAM3),但也可以降至28 Gbps,以提高产量和初始阶段的整体性能和成本效益。
据三星表示,GDDR7内存的能效将提高20%,同时工作电压仅为1.1V,低于标准的1.2V。通过采用更新的封装材料和优化的电路设计,使得在高速运行时的发热量降低,GDDR7的热阻比GDDR6降低了70%。