Python操作qml对象过程详解


Posted in Python onSeptember 26, 2019

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 相关文章推荐
Python open读写文件实现脚本
Sep 06 Python
通过C++学习Python
Jan 20 Python
举例区分Python中的浅复制与深复制
Jul 02 Python
Python Web静态服务器非堵塞模式实现方法示例
Nov 21 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
Dec 18 Python
Python 线性回归分析以及评价指标详解
Apr 02 Python
Python+redis通过限流保护高并发系统
Apr 15 Python
Python 如何操作 SQLite 数据库
Aug 17 Python
python判断字符串以什么结尾的实例方法
Sep 18 Python
PyTorch中的拷贝与就地操作详解
Dec 09 Python
Django如何与Ajax交互
Apr 29 Python
django上传文件的三种方式
Apr 29 Python
python 字典的打印实现
Sep 26 #Python
手把手教你pycharm专业版安装破解教程(linux版)
Sep 26 #Python
QML使用Python的函数过程解析
Sep 26 #Python
python 怎样将dataframe中的字符串日期转化为日期的方法
Sep 26 #Python
python3多线程知识点总结
Sep 26 #Python
详解基于python的多张不同宽高图片拼接成大图
Sep 26 #Python
Python容器使用的5个技巧和2个误区总结
Sep 26 #Python
You might like
PHP中GET变量的使用
2006/10/09 PHP
php 三维饼图的实现代码
2008/09/28 PHP
php随机显示图片的简单示例
2014/02/15 PHP
PHP简单获取视频预览图的方法
2015/03/12 PHP
thinkPHP基于ajax实现的菜单与分页示例
2016/07/12 PHP
jQuery下通过$.browser来判断浏览器.
2011/04/05 Javascript
javascript 树形导航菜单实例代码
2013/08/13 Javascript
取消选中单选框radio的三种方式示例介绍
2013/12/23 Javascript
使用jQuery实现返回顶部
2015/01/26 Javascript
jQuery中cookie插件用法实例分析
2015/12/04 Javascript
js判断手机访问或者PC的几个例子(常用于手机跳转)
2015/12/15 Javascript
js表单元素checked、radio被选中的几种方法(详解)
2016/08/22 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
2017/03/24 jQuery
node 利用进程通信实现Cluster共享内存
2017/10/27 Javascript
讲解vue-router之什么是动态路由
2018/05/28 Javascript
element-ui 上传图片后清空图片显示的实例
2018/09/04 Javascript
Angular CLI 使用教程指南参考小结
2019/04/10 Javascript
[01:15:15]VG VS EG Supermajor小组赛B组胜者组第一轮 BO3第二场 6.2
2018/06/03 DOTA
对Python3.x版本print函数左右对齐详解
2018/12/22 Python
Python选择网卡发包及接收数据包
2019/04/04 Python
python文档字符串(函数使用说明)使用详解
2019/07/30 Python
Python 异常的捕获、异常的传递与主动抛出异常操作示例
2019/09/23 Python
Python flask框架如何显示图像到web页面
2020/06/03 Python
移动端解决悬浮层(悬浮header、footer)会遮挡住内容的3种方法
2015/03/27 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
HTML5 DeviceOrientation实现手机网站摇一摇功能代码实例
2015/04/24 HTML / CSS
Banggood官网:面向全球客户的综合商城
2017/04/19 全球购物
澳大利亚最好的电动自行车:Leon Cycle
2020/12/19 全球购物
关于逃课的检讨书
2014/01/23 职场文书
行政管理毕业生自荐信
2014/02/24 职场文书
实习公司领导推荐函
2014/05/21 职场文书
小学校长汇报材料
2014/08/20 职场文书
幼儿园辞职信
2015/05/13 职场文书
学校教学工作总结2015
2015/05/19 职场文书
趣味运动会标语口号
2015/12/26 职场文书
教师正风肃纪心得体会
2016/01/15 职场文书