Python操作qml对象过程详解

Ebony ·
更新时间:2024-11-14
· 887 次阅读

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()) 您可能感兴趣的文章:QML使用Python的函数过程解析QML实现圆环颜色选择器Qt qml中listview 列表视图控件(下拉刷新、上拉分页、滚动轴)Python 实用技巧之正则表达式查找和替换文本的操作方法python文件选择对话框的操作方法Python音频操作工具PyAudio上手教程详解Python3模拟curl发送post请求操作示例



qml Python

需要 登录 后方可回复, 如果你还没有账号请 注册新账号